MyBatis的CURD操作

添加CURD接口方法

package mapper;

import entity.UserEntity;
import org.apache.ibatis.annotations.Param;
import java.util.List; /**
* @desc User映射器接口
* @date 2020/6/19 上午8:59
*/
public interface UserMapper {
/**
* 根据年龄查询用户信息
* @param age 年龄
* @return user 用户实体集合
*/
public List<UserEntity> selectUserByAge(int age); /**
* 根据年龄和性别查询用户信息
* @param userOne 获取年龄
* @param userTwo 获取性别
* @return 用户实体集合
*/
public List<UserEntity> selectUserByAgeAndSex(@Param("userOne") UserEntity userOne,@Param("userTwo") UserEntity userTwo); /**
* 根据姓名和年龄查询用户信息
* @param name 姓名
* @param user 获取年龄
* @return
*/
public List<UserEntity> selectUserByNameAndAge(@Param("name") String name, @Param("user") UserEntity user); /**
* 查询所有用户信息
* @return 用户实体集合
*/
public List<UserEntity> selectUserAll(); /**
* 新增用户
* @param user 用户实体
* @return 影响行数
*/
public int insertUser(UserEntity user); /**
* 更新用户姓名
* @param user 用户姓名
* @return 影响行数
*/
public int updateUser(@Param("id") int id,@Param("name") String name); /**
* 根据姓名删除用户
* @param name 用户姓名
* @return 影响行数
*/
public int deleteUserById(int id);
}

添加CURD接口方法对应的 UserMapper.xml 映射

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace表示命名空间,填写Mapper映射器接口全路径-->
<mapper namespace="mapper.UserMapper">
<!--结果集映射(ORM)-->
<resultMap id="userResultMap" type="entity.UserEntity">
<!-- propery表示UserEntity属性名,column表示tb_user表字段名-->
<id property="id" column="id" />
<result property="userName" column="userName" />
<result property="password" column="password" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<result property="birthday" column="birthday" />
<result property="created" column="created" />
<result property="updated" column="updated" />
</resultMap> <!--select查询语句 id表示接口方法名 resultMap表示引用结果集映射-->
<select id="selectUserByAge" resultMap="userResultMap">
select * from tb_user where age > #{age};
</select> <select id="selectUserByAgeAndSex" resultMap="userResultMap">
select * from tb_user where age > #{userOne.age} and sex = #{userTwo.sex};
</select> <select id="selectUserByNameAndAge" resultMap="userResultMap">
select * from tb_user where name = #{name} and age > #{user.age};
</select> <select id="selectUserAll" resultMap="userResultMap">
select * from tb_user;
</select> <insert id="insertUser">
insert into tb_user (id,userName, password, name, age, sex, birthday, created, updated) values
(null,#{userName},#{password},#{name},#{age},#{sex},#{birthday},now(),now());
</insert> <update id="updateUser">
update tb_user set name=#{name} where id=#{id};
</update> <delete id="deleteUserById">
delete from tb_user where id=#{id};
</delete>
</mapper>

使用 JUnit 单元测试框架测试 CURD 接口方法

在 test/java下创建 MyBatisTest.java 文件,如下:

import entity.UserEntity;
import mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; /**
* @author benjamin.xu
* @desc
* @date 2020/6/23 下午5:36
*/
public class MyBatisTest {
private UserMapper userMapper;
private SqlSession sqlSession; @Before
public void setUp() throws Exception {
// 指定mybatis环境配置文件
String resource = "mybatis-config.xml";
// 读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource); // 构建sqlSessionFactory
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream); // 获取sqlSession
sqlSession = sqlSessionFactory.openSession(); // 获取userMapper实例
userMapper = sqlSession.getMapper(UserMapper.class);
} @After
public void tearDown() throws Exception {
sqlSession.close();
} @Test
public void selectUserByAgeTest() {
List<UserEntity> userEntities = userMapper.selectUserByAge(20);
Assert.assertNotNull(userEntities);
} @Test
public void selectUserAllTest() {
List<UserEntity> userEntities = userMapper.selectUserAll();
Assert.assertEquals(2,userEntities.size());
} @Test
public void insertUserTest() throws Exception{
UserEntity userEntity = new UserEntity();
userEntity.setUserName("ww");
userEntity.setName("王五");
userEntity.setAge(21);
userEntity.setPassword("123456");
userEntity.setSex(1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = sdf.parse("1992-01-10");
userEntity.setBirthday(birthday); int result = userMapper.insertUser(userEntity);
sqlSession.commit(); //提交事务
Assert.assertEquals(1,result);
} @Test
public void updateUserTest() {
int result = userMapper.updateUser(1,"张三三");
sqlSession.commit();
Assert.assertEquals(1,result);
} @Test
public void deleteUserByIdTest() {
int result = userMapper.deleteUserById(4);
sqlSession.commit();
Assert.assertEquals(1,result);
} @Test
public void selectUserByAgeAndSexTest() {
UserEntity userEntityOne = new UserEntity();
userEntityOne.setAge(20);
UserEntity userEntityTwo = new UserEntity();
userEntityTwo.setSex(1); List<UserEntity> userEntities
= userMapper.selectUserByAgeAndSex(userEntityOne,userEntityTwo);
System.out.println(userEntities);
Assert.assertNotNull(userEntities);
} @Test
public void selectUserByNameAndAgeTest() {
UserEntity user = new UserEntity();
user.setAge(20); List<UserEntity> userEntities =
userMapper.selectUserByNameAndAge("李四",user);
System.out.println(userEntities);
Assert.assertNotNull(userEntities);
}
}

最新文章

  1. 爹地,我找到了!15个极好的Linux find命令示例
  2. BAT技巧
  3. Splay整理
  4. jboss端口说明
  5. 微软开源的30个基础设施项目-C#
  6. 电赛总结(二)&mdash;&mdash;AD芯片总结之高速AD9224
  7. Python:使用pymssql批量插入csv文件到数据库测试
  8. 【Android】isEmpty()
  9. 查询一周最近一周的数据,date String 随意转换,更有疯狂的排序
  10. ACM/ICPM2014鞍山现场赛D Galaxy (HDU 5073)
  11. leetcode Binary Tree Right Side
  12. js复制链接
  13. nodejs使用vue从搭建项目到发布部署
  14. SQL反模式学习笔记4 建立主键规范【需要ID】
  15. FCC(ES6写法) Exact Change
  16. 打开SharePoint 2013 web application显示iis 欢迎页面
  17. 转:【专题五】TCP编程
  18. RMAN 备份数据库到DISK后进行数据恢复
  19. sparkSQL实际应用
  20. Cocos2d-x的跨平台原理

热门文章

  1. 破解class文件的第一步:深入理解JAVA Class文件
  2. java中的|=符号
  3. L&#39;ane Trotro(小驴托托) 67集法语字幕+11集无字幕 百度云
  4. JMeter 实战案例
  5. 如何使用natapp来实现内网穿透及案例
  6. Innodb中的快照读和当前读
  7. 额!Java中用户线程和守护线程区别这么大?
  8. 01- web测试快速入门
  9. 功能:Java8新特性steam流
  10. hdu3594 强连通 tarjan