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();
    }
}

做一个有底线的博客主:项目coding地址:https://coding.net/u/xlsorry/p/springmybatis/git

目录
相关文章
|
9天前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
34 1
|
20天前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
10天前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
49 0
|
10天前
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
26 0
|
2月前
|
Java 数据库连接 测试技术
mybatis plus 获取新增实体的主键
mybatis plus 获取新增实体的主键
55 8
|
2月前
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
30 2
|
23天前
|
存储 SQL Java
MyBatis batchInsert 批量插入数据
MyBatis batchInsert 批量插入数据
38 0
|
24天前
|
前端开发 JavaScript Java
解决springboot+vue+mybatis中,将后台数据分页显示在前台,并且根据页码自动跳转对应页码信息
该博客文章讲述了如何在Spring Boot + Vue + MyBatis的项目中实现后台数据的分页查询,并在前端进行显示和页码跳转,包括后端的分页查询实现、前端与后端的交互以及使用Element UI进行分页展示的方法。
|
24天前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
|
2月前
|
Oracle 关系型数据库 Java
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列