MyBatis之Hello world(Mybatis入门)
来源:互联网 发布:传奇支付平台源码 编辑:程序博客网 时间:2024/05/21 18:31
MyBatis英文网:http://www.mybatis.org/mybatis-3/
MyBatis的Github:https://github.com/mybatis/mybatis-3
1:创建一个动态web工程
2:导入MyBatils必须的包
MyBatis的使用说明:
asm-3.3.1.jar 【字节码的包】
cglib-2.2.2.jar 【代理包】
commons-logging-1.1.1.jar 【日志包】
log4j-1.2.16.jar
mybatis-3.1.1.jar 【mybatis的核心包】
mysql-connector-java-5.1.40-bin.jar 【mysql的驱动包】
3:创建数据库和数据表,省略,创建实体类
1 package com.bie.mybatis01; 2 /** 3 * @author BieHongLi 4 * @version 创建时间:2017年4月11日 下午2:47:03 5 * 6 */ 7 public class User { 8 9 private Integer id;//用户编号10 private String name;//用户姓名11 private int sal;//用户薪资12 13 public Integer getId() {14 System.out.println("测试配置文件,确实是调用了user.getId");15 return id;16 }17 public void setId(Integer id) {18 this.id = id;19 }20 public String getName() {21 System.out.println("测试配置文件,确实是调用了user.getName");22 return name;23 }24 public void setName(String name) {25 this.name = name;26 }27 public int getSal() {28 System.out.println("测试配置文件,确实是调用了user.getSal");29 return sal;30 }31 public void setSal(int sal) {32 this.sal = sal;33 }34 public User(Integer id, String name, int sal) {35 super();36 this.id = id;37 this.name = name;38 this.sal = sal;39 }40 41 42 43 44 }
4:创建MyBatis的工具类:
1 package com.bie.utils; 2 3 import java.io.IOException; 4 import java.io.Reader; 5 import java.sql.Connection; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory;10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;11 12 /** 13 * @author BieHongLi 14 * @version 创建时间:2017年4月11日 下午3:01:22 15 * 工具类16 */17 public class MyBatisUtils {18 19 //定义私有静态当前线程泛型(SqlSession)对象20 private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();21 //定义私有静态sqlSessionFactory22 private static SqlSessionFactory sqlSessionFactory;23 24 //静态块,使用该类时,自动加载该静态块25 //加载位于src目录下面的mybatis.cfg.xml配置文件26 static{27 try {28 //读取配置文件mybatis.cfg.xml29 Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");30 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 31 } catch (IOException e) {32 e.printStackTrace();33 throw new RuntimeException(e);34 }35 }36 37 //禁止外界通过new方法创建38 private MyBatisUtils(){}39 40 //获取SqlSession41 public static SqlSession getSqlSession(){42 //从当前线程中获取SqlSession对象43 SqlSession sqlSession = threadLocal.get();44 //如果SqlSession对象为空45 if(sqlSession == null){46 //在SqlSessionFactory非空的情况下,获取SqlSession对象47 sqlSession = sqlSessionFactory.openSession();48 //将sqlSession对象与当前线程绑定在一起49 threadLocal.set(sqlSession);50 }51 //返回sqlSession对象52 return sqlSession;53 }54 55 //关闭SqlSession与当前线程分开56 public static void closeSqlSession(){57 //从当前线程中获取SqlSession对象58 SqlSession sqlSession = threadLocal.get();59 //如果SqlSession对象非空60 if(sqlSession != null){61 //关闭SqlSession对象62 sqlSession.close();63 //分开当前线程与SqlSession对象的关系,目的是让GC尽早回收64 threadLocal.remove();65 }66 }67 68 69 /*public static void main(String[] args) {70 SqlSession sqlSession = MyBatisUtils.getSqlSession();71 Connection con = sqlSession.getConnection();72 if(con!=null){73 System.out.println("连接成功");74 }else{75 System.out.println("连接失败");76 }77 78 System.out.println(con!=null?"connection is ok":"connection is fail");79 }*/80 81 }
5:创建映射文件,放到其包中即可,如UserMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 5 <!-- MyBatis的映射配置文件 6 namespace:名称空间,必须唯一 7 --> 8 <!-- <mapper namespace="userNamespace"> --> 9 <mapper namespace="com.bie.mybatis01.User">10 11 <!-- 12 resultMap标签:映射实体与表13 type属性:表示实体全路径名14 id属性:为实体与表的映射取一个任意名称且唯一的名字15 -->16 <resultMap type="com.bie.mybatis01.User" id="userMap">17 <!-- id标签映射主键 18 property属性:实体的属性名19 column属性:表的字段名20 -->21 <id column="id" property="id"/>22 23 <!-- result标签非主键属性 -->24 <result column="name" property="name"/>25 <result column="sal" property="sal"/>26 27 </resultMap>28 29 <!-- 30 insert标签:要书写insert这么一个sql语句31 id属性:为insert这么一个sql语句取一个任意唯一的名字32 -->33 <insert id="insertId" parameterType="com.bie.mybatis01.User">34 insert into user values(2,"张三",1234)35 </insert>36 37 <insert id="insertId2" parameterType="com.bie.mybatis01.User">38 <!-- 39 可以这样理解,参数的设置,其实#{id} 就等价于#{user.getId()}40 insert into user values(#{user.getId()},#{user.getName()},#{user.getSal()});41 42 -->43 insert into user values(#{id},#{name},#{sal})44 </insert>45 46 </mapper>
6:创建配置文件,放到src目录下面,如mybatils.cfg.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 5 <!-- 1:连接数据库的配置 --> 6 <configuration> 7 8 <!-- 设置一个默认的连接环境信息 --> 9 <environments default="jdbc_developer">10 11 <!-- 连接环境信息,取一个任意唯一的名字 -->12 <environment id="jdbc_developer">13 14 <!-- 2:MyBatis使用jdbc事务事务管理方式 -->15 <transactionManager type="jdbc"></transactionManager>16 17 <!-- 3:MyBatis使用连接池方式来获取连接 -->18 <dataSource type="pooled">19 20 <!-- 4:配置与数据库交互的4哥必要属性 -->21 <property name="driver" value="com.mysql.jdbc.Driver"/>22 <property name="url" value="jdbc:mysql:///test"/>23 <property name="username" value="root"/>24 <property name="password" value="123456"/>25 26 </dataSource>27 28 </environment>29 30 </environments>31 32 33 <!-- 加载映射文件 -->34 <mappers>35 <mapper resource="com/bie/mybatis01/UserMapper.xml"/>36 </mappers>37 38 </configuration>
7:开始写测试类UserDao进行测试
1 package com.bie.mybatis01; 2 3 import org.apache.ibatis.session.SqlSession; 4 5 import com.bie.utils.MyBatisUtil; 6 import com.bie.utils.MyBatisUtils; 7 8 /** 9 * @author BieHongLi 10 * @version 创建时间:2017年4月11日 下午3:03:54 11 * dao层持久层:数据交互层 12 */ 13 public class UserDao { 14 15 /*** 16 * 用户添加的方法 17 * @param user 18 */ 19 public void insert(){ 20 SqlSession sqlSession = null; 21 try { 22 //sqlSession = MyBatisUtils.getSqlSession(); 23 sqlSession = MyBatisUtil.getSqlSession(); 24 //事务开始(默认) 25 //读取UserMapper.xml映射文件中的SQL语句 26 int i = sqlSession.insert("userNamespace.insertId"); 27 System.out.println("本次操作影响了" + i + "行"); 28 29 //事务提交 30 sqlSession.commit(); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 //事务回滚 34 sqlSession.rollback(); 35 }finally { 36 MyBatisUtils.closeSqlSession(); 37 } 38 39 } 40 41 /*** 42 * 插入带参的方法 43 * @param user 44 */ 45 public void insert2(User user){ 46 SqlSession sqlSession = null; 47 try { 48 //第一首先链接数据库 49 sqlSession = MyBatisUtils.getSqlSession(); 50 //默认打开事务 51 //读取UserMapper.xml映射文件的SQL语句 52 //第一个参数,命名空间.sql的id,d第二个参数是方法的参数user 53 sqlSession.insert("userNamespace.insertId2", user); 54 55 //提交事务 56 sqlSession.commit(); 57 } catch (Exception e) { 58 e.printStackTrace(); 59 //回滚事务 60 sqlSession.rollback(); 61 }finally { 62 //关闭SqlSession 63 MyBatisUtils.closeSqlSession(); 64 } 65 66 } 67 68 public void insert3(User user){ 69 SqlSession sqlSession = null; 70 try { 71 //第一首先链接数据库 72 sqlSession = MyBatisUtils.getSqlSession(); 73 //默认打开事务 74 //读取UserMapper.xml映射文件的SQL语句 75 //第一个参数,命名空间.sql的id,d第二个参数是方法的参数user 76 sqlSession.insert("com.bie.mybatis01.User.insertId2", user); 77 78 //提交事务 79 sqlSession.commit(); 80 } catch (Exception e) { 81 e.printStackTrace(); 82 //回滚事务 83 sqlSession.rollback(); 84 }finally { 85 //关闭SqlSession 86 MyBatisUtils.closeSqlSession(); 87 } 88 89 } 90 91 public static void main(String[] args) { 92 UserDao dao = new UserDao(); 93 //dao.insert(); 94 //dao.insert2(new User(3,"张三",1234)); 95 dao.insert3(new User(4,"张三",1234)); 96 97 98 } 99 100 101 102 }
8:MyBatis的工作流
(a)通过Reader对象读取src目录下面的mybatis.xml配置文件(该配置文件的名称和未知可以任意)
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
(b)通过SqlSessionFactoryBuilder对象创建 SqlSessionFactory对象
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
(c)从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
(d)事务开始,在mybatis中默认
(e)通过SqlSession对象读取UserMapper.xml映射文件中的操作编号,从而读取sql语句
int i = sqlSession.insert("userNamespace.insertId");
(f)事务提交,必写
sqlSession.commit();
【注意:不要忘记事务回滚】
(g)关闭SqlSession对象,并且分开当前线程与SqlSession对象,让GC尽早回收
MyBatisUtils.closeSqlSession();
时间一分一秒的溜走,让自己做更有意义的事情,奋斗吧,小怪兽~~~
Time passes by, let yourself do more meaningful things, fight it, little monster ~ ~ ~ ~ ~ ~ ~ ~ ~!
- MyBatis之Hello world(Mybatis入门)
- Mybatis 快速入门之Hello World
- (1)MyBatis之Hello World
- myBatis入门之Hello word
- mybatis hello world
- mybatis学习(一)--hello world
- Mybatis环境搭建Hello world 程序
- Mybatis在Maven上的 hello world
- Velocity之Hello World(入门实例)
- JavaBean 之Hello World(入门实例)
- (一)nodejs入门之 'Hello World'
- Spring之hello world(Spring入门)
- SpringBoot入门(一)之Hello World
- Mybatis实战 之 Hello Mybatis(一)
- scheme 入门之 hello world
- JSF入门之hello world
- linux 入门 之 hello, world !
- JSF入门之hello world
- c++ 程序中实现抛出异常
- SpringMVC的初始
- String数组转List,List转String数组
- 北大游
- centos6安装mysql5.6
- MyBatis之Hello world(Mybatis入门)
- 2013中秋大同三日游
- EasyUI之Hello world(EasyUI的入门学习)
- java 有问必答
- CodeForces 772B Volatile Kite
- 生活碎碎念
- 获取本机IP地址
- oracle查询正在执行的sql
- 如何进入BIOS?电脑BIOS中USB模式启动热键