Mybatis注解

一.mybatis注解关键词

@Insert : 插入sql , 和xml insert sql语法完全一样
@Select : 查询sql,  和xml select sql语法完全一样
@Update : 更新sql,  和xml update sql语法完全一样
@Delete : 删除sql,  和xml delete sql语法完全一样
@Param :  入参
@Results : 结果集合
@Result : 结果

@Update
1. RoleMapper接口增加接口方法
2. 单元测试
@Delete
1. RoleMapper接口增加接口方法
2. 单元测试
@Update
1. RoleMapper接口增加接口方法
    /**
     * 
     * 
     * @Title: updateSysRoleById
     * 
     * @Description: updateSysRoleById
     * 
     * @param sysRole
     * @return
     * 
     * @return: int
     */
    @Update({ "update sys_role set role_name = #{roleName},enabled = #{enabled},create_by = #{createBy},create_time = #{createTime, jdbcType=TIMESTAMP} where id = #{id}" })
    int updateSysRoleById(SysRole sysRole);

2. 单元测试
@Test
    public void updateSysRoleByIdTest() {
        logger.info("updateSysRoleByIdTest");
        // 获取SqlSession
        SqlSession sqlSession = getSqlSession();
        try {
            // 获取RoleMapper接口
            RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);

            // 先根据ID查询出对应的sysRole
            SysRole sysRole = roleMapper.selectSysRoleById((long) 1);
            // roleName期望为管理员
            Assert.assertEquals("管理员", sysRole.getRoleName());

            // 修改RoleName
            sysRole.setRoleName("管理员Artisan");
            // 修改CreateBy
            sysRole.setCreateBy("Artisan");
            // 修改用户 ,返回受影响的行数
            int result = roleMapper.updateSysRoleById(sysRole);

            // 只插入一条数据 ,期望是1
            Assert.assertEquals(1, result);
            logger.info("受影响的行数:" + result);

            // 期望的RoleName为管理员Artisan
            Assert.assertEquals("管理员Artisan", sysRole.getRoleName());
            // 期望的CreateBy为Artisan
            Assert.assertEquals("Artisan", sysRole.getCreateBy());

            logger.info("sysRole:" + sysRole);


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 为了保持测试数据的干净,这里选择回滚
            // 由于默认的sqlSessionFactory.openSession()是不自动提交的
            // 除非显式的commit,否则不会提交到数据库
            sqlSession.rollback();
            logger.info("为了保持测试数据的干净,这里选择回滚,不写入mysql,请观察日志,回滚完成");

            sqlSession.close();
            logger.info("sqlSession close successfully ");
        }
    }

@Delete
1. RoleMapper接口增加接口方法
/**
     * 
     * 
     * @Title: deleteSysRoleById
     * 
     * @Description: deleteSysRoleById
     * 
     * @param id
     * @return
     * 
     * @return: int
     */
    @Delete("delete from sys_role where id = #{id}")
    int deleteSysRoleById(Long id);

2. 单元测试
@Test
    public void deleteSysRoleByIdTest() {
        logger.info("deleteSysRoleByIdTest");
        // 获取SqlSession
        SqlSession sqlSession = getSqlSession();
        try {
            // 获取roleMapper接口
            RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);

            // 调用删除接口
            int result = roleMapper.deleteSysRoleById((long) 1);
            // 期望影响的结果条数为 1
            Assert.assertEquals(1, result);

            // 再次查询
            SysRole sysRole = roleMapper.selectSysRoleById((long) 1);
            // 期望查询出来的sysRole 为 null
            Assert.assertNull(sysRole);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 为了保持测试数据的干净,这里选择回滚
            // 由于默认的sqlSessionFactory.openSession()是不自动提交的
            // 除非显式的commit,否则不会提交到数据库
            sqlSession.rollback();
            logger.info("为了保持测试数据的干净,这里选择回滚,不写入mysql,请观察日志,回滚完成");

            sqlSession.close();
            logger.info("sqlSession close successfully ");
        }
    }

原文地址:https://www.cnblogs.com/ringqq/p/11714578.html