zoukankan      html  css  js  c++  java
  • MyBatis 单表CURD操作(五)

    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);
        }
    }
    
    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    ArchLinux新版本(pacstrap安装)及国内较优源推荐
    [转载]打造自己喜欢的Linux桌面----archlinux
    ArchLinux下LXDE的安装与设置心得
    [转载]linux 文件改名,移动
    SaaS(软件即服务)架构设计
    临时表空间
    DTCMS自定义标签,获取所有栏目以及获得二级子栏目导航
    Druid简介
    jeecg 模糊查询
    JEECG中的模糊查询
  • 原文地址:https://www.cnblogs.com/binbingg/p/13747280.html
Copyright © 2011-2022 走看看