MyBatis注解开发-获取刚插入数据的主键

简介: MyBatis注解开发-获取刚插入数据的主键

@Insert是插入语句最为关键的注解

插入接口和注解的示例:

/**
 * 插入一条数据,注解方式不需要返回主键
 * @param sysRolePo
 * @return
 */
@Insert({
   "insert into sys_role(id, role_name, enable, create_by, create_time) ",
        "values(#{id}, #{roleName}, #{enable}, #{createBy}, #{createTime})"})
int insert1(SysRolePo sysRolePo);

需要返回主键和xml类似需要useGeneratedKeys和keyProperty

  • 返回自增主键需要使用@Options注解
  • 返回非自增主键需要使用@SelectKey注解

返回主键接口示例

/**
 * 插入一条数据,返回自增主键
 *
 * @param sysRolePo
 * @return
 */
@Insert({
   "insert into sys_role(role_name, enable, create_by, create_time)",
        "values(#{roleName}, #{enable}, #{createBy}, #{createTime})"})
@Options(useGeneratedKeys = true, keyProperty = "id")
int insert2(SysRolePo sysRolePo);

/**
 * 插入一条数据,返回非自增主键
 *
 * @param sysRolePo
 * @return
 */
@Insert({
   "insert into sys_role(role_name, enable, create_by, create_time)",
        "values(#{roleName}, #{enable}, #{createBy}, #{createTime})"})
@SelectKey(statement = "SELECT LAST_INSERT_ID()",
        keyProperty = "id",
        resultType = Long.class,
        before = false)
int insert3(SysRolePo sysRolePo);

测试代码

@Test
public void testInsert() {
   
    // 获取sqlSession
    SqlSession sqlSession = getSqlSession();
    try {
   
        // 获取sysUserMapper接口
        SysRoleMapper sysRoleMapper = sqlSession.getMapper(SysRoleMapper.class);
        SysRolePo sysRolePo = new SysRolePo();
        sysRolePo.setRoleName("test");
        sysRolePo.setEnable(2);
        sysRolePo.setCreateBy(1L);
        sysRolePo.setCreateTime(new Date());
        int i = sysRoleMapper.insert1(sysRolePo);
        if(i > 0){
   
            System.out.println("插入一条数据,注解方式不需要返回主键。操作成功");
        }
        int i1 = sysRoleMapper.insert2(sysRolePo);
        if (i1 > 0){
   
            System.out.println("插入一条数据,返回自增主键。操作成功,主键为:" + sysRolePo.getId());
        }
    }catch (Exception e) {
   
        // 如果报错,这里选择回滚
        sqlSession.rollback();
        e.printStackTrace();
    } finally {
   
        sqlSession.commit();
        sqlSession.close();
    }
}
目录
相关文章
|
4月前
|
存储 SQL Java
MyBatis batchInsert 批量插入数据
MyBatis batchInsert 批量插入数据
107 0
|
存储 XML Java
Mybatis使用SelectKey自定义主键
Mybatis使用SelectKey自定义主键
185 0
mybatis-plus动态表名
mybatis-plus动态表名
142 0
mybatis-plus复合主键的使用
mybatis-plus复合主键的使用
2220 0
|
Java 数据库连接 数据库
九、MyBatis添加功能获取自增主键
MyBatis添加功能获取自增主键
155 0
九、MyBatis添加功能获取自增主键
|
Java 数据库连接 数据库
【MyBatis】学习笔记10:添加功能获取自增的主键
【MyBatis】学习笔记10:添加功能获取自增的主键
83 0
|
SQL 算法 Oracle
Mybatis-Plus主键生成策略详解
Mybatis-Plus主键生成策略详解
2189 0
Mybatis-Plus主键生成策略详解
|
SQL Java 数据库连接
跟我一起学mybatis之注解开发多表操作
跟我一起学mybatis之注解开发多表操作
150 0
跟我一起学mybatis之注解开发多表操作
|
Java 数据库连接 数据库
MyBatis 批量插入数据的 3 种方法!(2)
MyBatis 批量插入数据的 3 种方法!(2)
219 0
MyBatis 批量插入数据的 3 种方法!(2)
|
Java 数据库连接 测试技术
MyBatis 批量插入数据的 3 种方法!(4)
MyBatis 批量插入数据的 3 种方法!(4)
175 0
MyBatis 批量插入数据的 3 种方法!(4)