• 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 ");
            }
        }

  • 相关阅读:
    基于SAR对Linux资源的监控shell脚本
    Python3+RobotFramewok 用户自定义库的开发(四)
    Python3+RobotFramewok 循环判断以及Evaluate用法(三)
    Python3+RobotFramewok 快速入门(二)
    Python3+RobotFramewok RIDE环境搭建(一)
    MySQL主从双向同步
    笔记:网络协议
    Jmeter组成结构及运行原理
    Selenium WebDriver的实现及工作原理
    Jenkins+maven环境部署
  • 原文地址:https://www.cnblogs.com/ringqq/p/11714578.html
Copyright © 2020-2023  润新知