mybatis教程(一):简单实现
1、简单实现
1.1、创建一个java项目。目录及需要的 jar 包如下
1.2准备数据库 (mysql)数据
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /* 2 Navicat MySQL Data Transfer 3 4 Source Server : 本地 5 Source Server Version : 50712 6 Source Host : localhost:3306 7 Source Database : mybatis 8 9 Target Server Type : MYSQL 10 Target Server Version : 50712 11 File Encoding : 65001 12 13 Date: 2018-01-31 11:37:10 14 */ 15 16 CREATE DATABASE mybatis; 17 USE mybatis; 18 19 DROP TABLE IF EXISTS `t_user`; 20 CREATE TABLE `t_user` ( 21 `id` int(11) NOT NULL AUTO_INCREMENT, 22 `username` varchar(30) NOT NULL COMMENT '用户名称', 23 `birthday` date DEFAULT NULL COMMENT '生日', 24 `sex` char(2) DEFAULT NULL COMMENT '性别', 25 `address` varchar(256) DEFAULT NULL COMMENT '地址', 26 PRIMARY KEY (`id`) 27 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; 28 29 INSERT INTO `t_user` VALUES ('1', '小A', '2015-06-27', '2', '北京'); 30 INSERT INTO `t_user` VALUES ('2', '小黑', '2018-01-31', '2', '上海'); 31 INSERT INTO `t_user` VALUES ('3', '小C', '2015-06-27', '1', '北京'); 32 INSERT INTO `t_user` VALUES ('4', '小D', '2015-06-27', '2', '北京'); 33 INSERT INTO `t_user` VALUES ('5', '小红', '2018-01-31', '1', '上海');
1.3测试代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.entity; 2 3 import java.util.Date; 4 5 public class User { 6 7 private Integer id; 8 // 姓名 9 private String username; 10 // 性别 11 private String sex; 12 // 地址 13 private String address; 14 // 生日 15 private Date birthday; 16 17 18 public Integer getId() { 19 return id; 20 } 21 public void setId(Integer id) { 22 this.id = id; 23 } 24 public String getUsername() { 25 return username; 26 } 27 public void setUsername(String username) { 28 this.username = username; 29 } 30 public String getSex() { 31 return sex; 32 } 33 public void setSex(String sex) { 34 this.sex = sex; 35 } 36 public String getAddress() { 37 return address; 38 } 39 public void setAddress(String address) { 40 this.address = address; 41 } 42 public Date getBirthday() { 43 return birthday; 44 } 45 public void setBirthday(Date birthday) { 46 this.birthday = birthday; 47 } 48 49 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.service; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Date; 6 import java.util.List; 7 8 import org.apache.ibatis.io.Resources; 9 import org.apache.ibatis.session.SqlSession; 10 import org.apache.ibatis.session.SqlSessionFactory; 11 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 12 import org.junit.Test; 13 14 import com.mybatis.entity.User; 15 16 public class MybatisService { 17 18 // 根据Id查询用户信息,得到一条记录结果 19 @Test 20 public void findUserByIdTest() { 21 // mybatis的配置文件 22 String resource = "SqlMapConfig.xml"; 23 InputStream inputStream = null; 24 SqlSession sqlSession = null; 25 try { 26 inputStream = Resources.getResourceAsStream(resource); 27 // 1.创建会话工场,传入mybatis的配置文件信息 28 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() 29 .build(inputStream); 30 31 // 2.通过工厂得到SqlSession 32 sqlSession = sqlSessionFactory.openSession(); 33 34 // 3.通过sqlSession操作数据库 35 // 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id; 36 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数; 37 // sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象; 38 // selectOne:查询一条结果 39 User user = sqlSession.selectOne("test.findUserById", 1); 40 System.out.println(user.toString()); 41 42 } catch (IOException e) { 43 e.printStackTrace(); 44 } finally { 45 if (sqlSession != null) { 46 sqlSession.close(); 47 } 48 if (inputStream != null) { 49 try { 50 inputStream.close(); 51 } catch (IOException e) { 52 e.printStackTrace(); 53 } 54 } 55 } 56 } 57 58 // 根据姓名模糊查询用户信息,得到一条或多条记录结果 59 @Test 60 public void findUserByNameTest() { 61 // mybatis的配置文件 62 String resource = "SqlMapConfig.xml"; 63 InputStream inputStream = null; 64 SqlSession sqlSession = null; 65 try { 66 inputStream = Resources.getResourceAsStream(resource); 67 // 1.创建会话工场,传入mybatis的配置文件信息 68 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() 69 .build(inputStream); 70 71 // 2.通过工厂得到SqlSession 72 sqlSession = sqlSessionFactory.openSession(); 73 74 // 3.通过sqlSession操作数据库 75 // 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id; 76 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数; 77 // sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象; 78 // list中的user和resultType类型一致 79 List<User> list = sqlSession.selectList("test.findUserByName", "小"); 80 System.out.println(list); 81 82 } catch (IOException e) { 83 e.printStackTrace(); 84 } finally { 85 if (sqlSession != null) { 86 sqlSession.close(); 87 } 88 if (inputStream != null) { 89 try { 90 inputStream.close(); 91 } catch (IOException e) { 92 e.printStackTrace(); 93 } 94 } 95 } 96 } 97 98 // 添加用户 99 @Test 100 public void insertUserTest() { 101 // mybatis的配置文件 102 String resource = "SqlMapConfig.xml"; 103 InputStream inputStream = null; 104 SqlSession sqlSession = null; 105 try { 106 inputStream = Resources.getResourceAsStream(resource); 107 // 1.创建会话工场,传入mybatis的配置文件信息 108 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() 109 .build(inputStream); 110 // 2.通过工厂得到SqlSession 111 sqlSession = sqlSessionFactory.openSession(); 112 //插入用户的对象 113 User user = new User(); 114 user.setUsername("小红"); 115 user.setBirthday(new Date()); 116 user.setSex("1"); 117 user.setAddress("上海"); 118 // 3.通过sqlSession操作数据库 119 // 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id; 120 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数; 121 // sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象; 122 sqlSession.insert("test.insertUser", user); 123 //执行提交事务 124 sqlSession.commit(); 125 126 //项目中经常需要 获取新增的用户的主键 127 System.out.println(user.getId()); 128 129 } catch (IOException e) { 130 e.printStackTrace(); 131 } finally { 132 if (sqlSession != null) { 133 sqlSession.close(); 134 } 135 if (inputStream != null) { 136 try { 137 inputStream.close(); 138 } catch (IOException e) { 139 e.printStackTrace(); 140 } 141 } 142 } 143 } 144 145 // 根据Id删除用户 146 @Test 147 public void deleteUserTest() { 148 // mybatis的配置文件 149 String resource = "SqlMapConfig.xml"; 150 InputStream inputStream = null; 151 SqlSession sqlSession = null; 152 try { 153 inputStream = Resources.getResourceAsStream(resource); 154 // 1.创建会话工场,传入mybatis的配置文件信息 155 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() 156 .build(inputStream); 157 // 2.通过工厂得到SqlSession 158 sqlSession = sqlSessionFactory.openSession(); 159 // 3.通过sqlSession操作数据库 160 // 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id; 161 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数; 162 // sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象; 163 //传入Id,删除用户 164 sqlSession.delete("test.deleteUser", 7); 165 //执行提交事务 166 sqlSession.commit(); 167 } catch (IOException e) { 168 e.printStackTrace(); 169 } finally { 170 if (sqlSession != null) { 171 sqlSession.close(); 172 } 173 if (inputStream != null) { 174 try { 175 inputStream.close(); 176 } catch (IOException e) { 177 e.printStackTrace(); 178 } 179 } 180 } 181 } 182 183 // 根据Id更新用户信息 184 @Test 185 public void updateUserTest() { 186 // mybatis的配置文件 187 String resource = "SqlMapConfig.xml"; 188 InputStream inputStream = null; 189 SqlSession sqlSession = null; 190 try { 191 inputStream = Resources.getResourceAsStream(resource); 192 // 1.创建会话工场,传入mybatis的配置文件信息 193 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() 194 .build(inputStream); 195 // 2.通过工厂得到SqlSession 196 sqlSession = sqlSessionFactory.openSession(); 197 //更新用户的信息 198 User user = new User(); 199 user.setId(2); 200 user.setUsername("小黑"); 201 user.setBirthday(new Date()); 202 user.setSex("2"); 203 user.setAddress("上海"); 204 // 3.通过sqlSession操作数据库 205 // 第一个参数:映射文件中的statement的Id,等于namespace + "." + statement的id; 206 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数; 207 // sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象; 208 //更具Id更新用户 209 sqlSession.update("test.updateUser", user); 210 //执行提交事务 211 sqlSession.commit(); 212 } catch (IOException e) { 213 e.printStackTrace(); 214 } finally { 215 if (sqlSession != null) { 216 sqlSession.close(); 217 } 218 if (inputStream != null) { 219 try { 220 inputStream.close(); 221 } catch (IOException e) { 222 e.printStackTrace(); 223 } 224 } 225 } 226 } 227 228 }
1.4配置文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# Global logging configuration #\u5728\u5F00\u53D1\u7684\u73AF\u5883\u4E0B\uFF0C\u65E5\u5FD7\u7EA7\u522B\u8981\u8BBE\u7F6E\u6210DEBUG\uFF0C\u751F\u4EA7\u73AF\u5883\u8BBE\u7F6E\u6210info\u6216error log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 <!-- namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离 6 注意:使用mapper代理开发时,namespace有特殊作用 7 --> 8 <mapper namespace="test"> 9 <!-- 在映射文件中配置很多sql语句 --> 10 <!-- 需求:通过Id查询用户表的记录 --> 11 <!-- 通过SELECT执行数据库查询 12 id:标识映射文件中的sql,称为statement的id; 13 将sql语句封装在mapperStatement的对象中,所以Id称为Statement的id; 14 parameterType:指定输入参数的类型,这里指定int型 15 #{}:表示一个占位符; 16 #{id}:其中Id表示接收输入的参数,参数名称就是Id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其它名称; 17 resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成java对象。 18 --> 19 <select id="findUserById" parameterType="int" resultType="com.mybatis.entity.User" > 20 select * from t_user where id=#{id} 21 </select> 22 <!-- 根据用户名称模糊查询用户信息,可能返回多条数据 23 resultType:指定的就是单条记录所映射的java类型; 24 ${}:表示拼接sql字符串,将接收到的参数内容不加任何修饰拼接在sql中. 25 使用${}拼接sql,可能会引起sql注入 26 ${value}:接收输入参数的内容,如果传入的是简单类型,${}中只能使用value 27 --> 28 <select id="findUserByName" parameterType="java.lang.String" resultType="com.mybatis.entity.User" > 29 select * from t_user where username LIKE '%${value}%' 30 </select> 31 <!-- 添加用户 32 parameterType:指定输入的参数类型是pojo(包括用户信息); 33 #{}中指定pojo的属性名称,接收到pojo对象的属性值 ,mybatis通过OGNL(类似struts2的OGNL)获取对象的属性值 34 --> 35 <insert id="insertUser" parameterType="com.mybatis.entity.User" > 36 <!-- 37 将insert插入的数据的主键返回到User对象中; 38 select last_insert_id():得到刚insert进去记录的主键值,只适用于自增主键; 39 keyProperty:将查询到的主键值,设置到parameterType指定的对象的那个属性 40 order:select last_insert_id()执行顺序,相对于insert语句来说它的执行顺序。 41 resultType:指定select last_insert_id()的结果类型; 42 --> 43 <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> 44 select last_insert_id() 45 </selectKey> 46 <!-- 47 使用mysql的uuid(),实现非自增主键的返回。 48 执行过程:通过uuid()得到主键,将主键设置到user对象的Id的属性中,其次,在insert执行时,从user对象中取出Id属性值; 49 <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> 50 select uuid() 51 </selectKey> 52 insert into t_user (id,username,birthday,sex,address) values(#{id},#{username},#{birthday},#{sex},#{address}) 53 --> 54 insert into t_user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}) 55 </insert> 56 <!-- 删除用户 57 根据ID删除用户,需要输入Id值 58 --> 59 <delete id="deleteUser" parameterType="java.lang.Integer"> 60 delete from t_user where id=#{id} 61 </delete> 62 <!-- 更新用户 63 需要传入用户的Id和用户的更新信息 64 parameterType:指定User对象,包括Id和用户的更新信息,注意:Id是必须存在的 65 #{id}:从输入的User对象中获取Id的属性值 66 --> 67 <update id="updateUser" parameterType="com.mybatis.entity.User"> 68 update t_user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} 69 where id=#{id} 70 </update> 71 72 </mapper>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 4 <configuration> 5 6 <!-- 和spring整合后 environments配置将废除--> 7 <environments default="development"> 8 <environment id="development"> 9 <!-- 使用jdbc事务管理,事务控制由mybatis管理--> 10 <transactionManager type="JDBC" /> 11 <!-- 数据库连接池,由mybatis管理--> 12 <dataSource type="POOLED"> 13 <property name="driver" value="com.mysql.jdbc.Driver" /> 14 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> 15 <property name="username" value="root" /> 16 <property name="password" value="root" /> 17 </dataSource> 18 </environment> 19 </environments> 20 21 <!-- 加载映射文件 --> 22 <mappers> 23 <mapper resource="sqlmap/User.xml"/> 24 </mappers> 25 </configuration>
1.5采用 Junit 方式调试运行
至此,一个最简单的mybatis项目就构建完成了
2、dao实现
2.1新建接口 UserDao.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.dao; 2 3 import java.util.List; 4 5 import com.mybatis.entity.User; 6 7 public interface UserDao { 8 9 /** 根据ID查询用户信息*/ 10 public User findUserById(Integer id); 11 12 /**根据用户名称模糊查询用户信息*/ 13 public List<User> findUserByName(String username); 14 15 /** 添加用户*/ 16 public void insertUser(User user); 17 18 /** 根据ID删除用户*/ 19 public void deleteUser(Integer id); 20 21 /** 根据ID更新用户*/ 22 public void updateUser(User user); 23 24 }
2.2新建接口实现类 UserDaoImpl
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.dao.impl; 2 3 import java.util.List; 4 5 import org.apache.ibatis.session.SqlSession; 6 import org.apache.ibatis.session.SqlSessionFactory; 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 8 9 import com.mybatis.dao.UserDao; 10 import com.mybatis.entity.User; 11 12 public class UserDaoImpl implements UserDao { 13 14 // 通过构造方法向 dao 实现类中注入 sqlSessionFactory 15 private SqlSessionFactory sqlSessionFactory; 16 public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ 17 this.sqlSessionFactory = sqlSessionFactory; 18 } 19 20 @Override 21 public User findUserById(Integer id) { 22 SqlSession sqlSession = sqlSessionFactory.openSession(); 23 User user = sqlSession.selectOne("test.findUserById", id); 24 // 释放资源 25 sqlSession.close(); 26 return user; 27 } 28 29 @Override 30 public List<User> findUserByName(String username) { 31 SqlSession sqlSession = sqlSessionFactory.openSession(); 32 List<User> list = sqlSession 33 .selectList("test.findUserByName", username); 34 35 // 提交事务 36 sqlSession.commit(); 37 // 释放资源 38 sqlSession.close(); 39 return list; 40 } 41 42 @Override 43 public void insertUser(User user) { 44 SqlSession sqlSession = sqlSessionFactory.openSession(); 45 // 执行插入操作 46 sqlSession.insert("test.insertUser", user); 47 // 提交事务 48 sqlSession.commit(); 49 // 释放资源 50 sqlSession.close(); 51 } 52 53 @Override 54 public void deleteUser(Integer id) { 55 SqlSession sqlSession = sqlSessionFactory.openSession(); 56 // 执行插入操作 57 sqlSession.delete("test.deleteUser", id); 58 // 提交事务 59 sqlSession.commit(); 60 // 释放资源 61 sqlSession.close(); 62 } 63 64 @Override 65 public void updateUser(User user) { 66 SqlSession sqlSession = sqlSessionFactory.openSession(); 67 // 执行插入操作 68 sqlSession.update("test.updateUser", user); 69 // 提交事务 70 sqlSession.commit(); 71 // 释放资源 72 sqlSession.close(); 73 } 74 75 }
2.3新建接口测试类 UserDaoTest.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.dao; 2 3 import java.io.InputStream; 4 import java.util.Date; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 10 import org.junit.Before; 11 import org.junit.Test; 12 13 import com.mybatis.dao.impl.UserDaoImpl; 14 import com.mybatis.entity.User; 15 16 public class UserDaoTest { 17 18 private SqlSessionFactory sqlSessionFactory; 19 20 @Before 21 public void setUp() throws Exception { 22 String resource = "SqlMapConfig.xml"; 23 InputStream inputStream = Resources.getResourceAsStream(resource); 24 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 25 } 26 27 @Test 28 public void findUserByIdTest() { 29 UserDaoImpl userDao = new UserDaoImpl(sqlSessionFactory); 30 User user = userDao.findUserById(1); 31 System.out.println(user); 32 } 33 34 @Test 35 public void findUserByNameTest() { 36 UserDaoImpl userDao = new UserDaoImpl(sqlSessionFactory); 37 List<User> list = userDao.findUserByName("小"); 38 System.out.println(list); 39 } 40 41 @Test 42 public void insertUserTest() { 43 UserDaoImpl userDao = new UserDaoImpl(sqlSessionFactory); 44 User user = new User(); 45 user.setUsername("张三丰"); 46 user.setSex("1"); 47 user.setBirthday(new Date()); 48 user.setAddress("武当山"); 49 userDao.insertUser(user); 50 } 51 52 @Test 53 public void deleteUserTest() { 54 UserDaoImpl userDao = new UserDaoImpl(sqlSessionFactory); 55 userDao.deleteUser(8); 56 } 57 58 @Test 59 public void updateUserTest() { 60 UserDaoImpl userDao = new UserDaoImpl(sqlSessionFactory); 61 User user = new User(); 62 user.setId(1); 63 user.setUsername("王六"); 64 user.setSex("2"); 65 user.setAddress("天津"); 66 user.setBirthday(new Date()); 67 userDao.updateUser(user); 68 } 69 70 }
2.4采用 Junit 方式调试运行
3、用mapper代理dao
3.1新建 UserMapper.java 接口,作用等同 UserDao.java 接口
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.dao; 2 3 import java.util.List; 4 5 import com.mybatis.entity.User; 6 7 public interface UserMapper { 8 9 /** 根据ID查询用户信息 */ 10 public User findUserById(int id); 11 12 /** 根据用户名称模糊查询用户信息 */ 13 public List<User> findUserByName(String username); 14 15 /** 添加用户 */ 16 public void insertUser(User user); 17 18 /** 根据ID删除用户 */ 19 public void deleteUser(Integer id); 20 21 /** 根据ID更新用户 */ 22 public void updateUser(User user); 23 24 }
3.2修改 User.xml 为 UserMapper.xml
内容只需要修改其命名空间即可。路径为src下 UserMapper.java 的路径
3.3添加 UserMapper.xml 在 SqlMapConfig.xml 中的映射
3.4测试代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.mybatis.dao; 2 3 import java.io.InputStream; 4 import java.util.Date; 5 import java.util.List; 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 import org.junit.Before; 12 import org.junit.Test; 13 14 import com.mybatis.entity.User; 15 16 public class UserMapperTest { 17 18 private SqlSessionFactory sqlSessionFactory; 19 20 // 此方法是在执行findUserByIdTest之前执行 21 @Before 22 public void setUp() throws Exception { 23 String resource = "SqlMapConfig.xml"; 24 InputStream inputStream = Resources.getResourceAsStream(resource); 25 // 创建SqlSessionFcatory 26 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 27 } 28 29 @Test 30 public void testFindUserById() { 31 SqlSession sqlSession = sqlSessionFactory.openSession(); 32 // 创建Usermapper对象,mybatis自动生成mapper代理对象 33 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 34 User user = mapper.findUserById(1); 35 System.out.println(user); 36 sqlSession.close(); 37 } 38 39 @Test 40 public void testFindUserByName() { 41 SqlSession sqlSession = sqlSessionFactory.openSession(); 42 // 创建Usermapper对象,mybatis自动生成mapper代理对象 43 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 44 List<User> list = mapper.findUserByName("小"); 45 System.out.println(list); 46 sqlSession.close(); 47 } 48 49 @Test 50 public void testDeleteUser() { 51 SqlSession sqlSession = sqlSessionFactory.openSession(); 52 // 创建Usermapper对象,mybatis自动生成mapper代理对象 53 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 54 mapper.deleteUser(6); 55 sqlSession.commit(); 56 sqlSession.close(); 57 } 58 59 @Test 60 public void testInsertUser() { 61 SqlSession sqlSession = sqlSessionFactory.openSession(); 62 // 创建Usermapper对象,mybatis自动生成mapper代理对象 63 User user = new User(); 64 user.setUsername("者别"); 65 user.setSex("1"); 66 user.setAddress("蒙古乞颜部落"); 67 user.setBirthday(new Date()); 68 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 69 mapper.insertUser(user); 70 sqlSession.commit(); 71 sqlSession.close(); 72 } 73 74 @Test 75 public void testUpdateUser() { 76 SqlSession sqlSession = sqlSessionFactory.openSession(); 77 // 创建Usermapper对象,mybatis自动生成mapper代理对象 78 User user = new User(); 79 user.setId(11);//必须设置Id 80 user.setUsername("神箭手者别"); 81 user.setSex("1"); 82 user.setAddress("蒙古乞颜部落"); 83 user.setBirthday(new Date()); 84 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 85 mapper.updateUser(user); 86 sqlSession.commit(); 87 sqlSession.close(); 88 } 89 90 }
3.5 junit 调试运行