您现在的位置是:首页 > 电脑 > 

@Insert的用法

2025-07-26 20:55:11
了许久@Insert的用法,先转载一波留个记录,原文链接在最下面 概述 不需要返回主键 1.RoleMapper接口增加接口方法 2.单元测试 返回自增主键 1.RoleMapper接口增加接口方法 2.单元测试 返回非自增主键 1.RoleMapper接口增加接口方法 2.单元测试 概述 @Insert注解本身很简单,需要注意的是如果

了许久@Insert的用法,先转载一波留个记录,原文链接在最下面

概述
不需要返回主键
1.RoleMapper接口增加接口方法
2.单元测试
返回自增主键
1.RoleMapper接口增加接口方法
2.单元测试
返回非自增主键
1.RoleMapper接口增加接口方法
2.单元测试
概述
@Insert注解本身很简单,需要注意的是如果需要返回主键的值,情况会稍微复杂一点,这种XML方式配置本质是一样的

不需要返回主键
1.RoleMapper接口增加接口方法
/**
     * 
     * 
     * @Title: insertSysRole
     * 
     * @Description: insertSysRole 不需要返回主键的情况
     * 
     * @param sysRole
     * @return
     * 
     * @return: int
     */
    @Insert({ insert into sys_role(id, role_name, enabled, create_by, create_time) values(#{id}, #{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
    int insertSysRole(SysRole sysRole);

2.单元测试
@Test
    public void insertSysRoleTest() {
        logger.info(insertSysRoleTest);
        // 获取SqlSession
        SqlSession sqlSession = getSqlSession();
        try {
            // 获取RoleMapper接口
            RoleMapper roleMapper = sqlSession.getMapper();
            SysRole sysRole = new SysRole();
            sysRole.setId((long) 99);
            sysRole.setRoleame(小工匠);
            sysRole.setEnabled(1);
            sysRole.setCreateBy(test);
            sysRole.setCreateTime(new Date());
            // 新增用户 ,返回受影响的行数
            int result = roleMapper.insertSysRole(sysRole);

            // 只插入一条数据 ,期望是1
            Assert.assertEquals(1, result);
            // 期望roleame 为小工匠
            Assert.assertEquals(小工匠, sysRole.getRoleame());

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

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


返回自增主键
1.RoleMapper接口增加接口方法
/**
     * 
     * 
     * @Title: insertSysRole2
     * 
     * @Description: insertSysRole2 返回自增主键的情况
     * 
     * @param sysRole
     * @return
     * 
     * @return: int
     */
    @Insert({ insert into sys_role(role_name, enabled, create_by, create_time) values(#{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
    @Opti(useGeneratedKeys = true, keyProperty = id)
    int insertSysRole2(SysRole sysRole);

和第一个场景相比,SQL语句中少了id这一列,注解多了一个@Opti, 我们在这个注解设置了useGeneratedKeys 和 keyProperty ,用法同xml中的配置。

2.单元测试
@Test
    public void insertSysRoleTest2() {
        logger.info(insertSysRoleTest2);
        // 获取SqlSession
        SqlSession sqlSession = getSqlSession();
        try {
            // 获取RoleMapper接口
            RoleMapper roleMapper = sqlSession.getMapper();
            SysRole sysRole = new SysRole();
            sysRole.setRoleame(小工匠2);
            sysRole.setEnabled(1);
            sysRole.setCreateBy(test2);
            sysRole.setCreateTime(new Date());
            // 新增用户 ,返回受影响的行数
            int result = roleMapper.insertSysRole2(sysRole);

            // 只插入一条数据 ,期望是1
            Assert.assertEquals(1, result);
            // 期望roleame 为小工匠
            Assert.assertEquals(小工匠2, sysRole.getRoleame());

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

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


返回非自增主键
1.RoleMapper接口增加接口方法
/**
     * 
     * 
     * @Title: insertSysRole
     * 
     * @Description: insertSysRole 返回非自增主键的情况
     * 
     * @param sysRole
     * @return
     * 
     * @return: int
     */
    @Insert({ insert into sys_role(role_name, enabled, create_by, create_time) values(#{roleame}, #{enabled}, #{createBy}, #{createTime, jdbcType=TIMESTAMP}) })
    @SelectKey(statement = SELECT LAST_ISERT_ID(), keyProperty = id, resultType = , before = false)
    int insertSysRole(SysRole sysRole);


配置和xml基本是相同的,其中before=false 等同于order=”AFTER”. before=true 等同于order=”BEFORE”.

不同数据库中,order的配置不同,需要注意下。

2.单元测试
@Test
    public void insertSysRoleTest() {
        logger.info(insertSysRoleTest);
        // 获取SqlSession
        SqlSession sqlSession = getSqlSession();
        try {
            // 获取RoleMapper接口
            RoleMapper roleMapper = sqlSession.getMapper();
            SysRole sysRole = new SysRole();
            sysRole.setRoleame(小工匠);
            sysRole.setEnabled(1);
            sysRole.setCreateBy(test);
            sysRole.setCreateTime(new Date());
            // 新增用户 ,返回受影响的行数
            int result = roleMapper.insertSysRole(sysRole);

            // 只插入一条数据 ,期望是1
            Assert.assertEquals(1, result);
            // 期望roleame 为小工匠
            Assert.assertEquals(小工匠, sysRole.getRoleame());

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

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


原文:https:///yangshangwei/article/details/8000186 
 

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/549504.html

相关标签:无
上传时间: 2023-06-29 02:03:23
留言与评论(共有 5 条评论)
本站网友 乳腺疾病
22分钟前 发表
#{createTime
本站网友 淘宝网新闻
7分钟前 发表
#{createBy}
本站网友 se53se
9分钟前 发表
sysRole.getRoleame());             logger.info(sysRole
本站网友 深圳市交通警察局
1分钟前 发表
#{roleame}