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();
    }
}
目录
相关文章
|
6月前
|
SQL XML Java
Mybatis基础使用知识(注解)
mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。 最后 mybatis 框架执行sql 并将结果映射为java对象并返回。采用ORM(对象关系映射)思想解决了实体和数据库映射问题,对jdbc进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
482 1
|
9月前
|
SQL XML Java
MyBatis注解的运用于条件搜索实践
通过上述的实践,我们可以看出MyBatis注解不仅能够实现条件搜索的需求,还能够提供灵活而强大的SQL构造能力,极大地简化了代码的复杂度,提高了开发效率。在实际的项目开发中,结合实际的业务需求合理选择MyBatis的配置方式(注解或XML),能够让数据持久层代码变得更加清晰和易维护。
170 11
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
1284 9
|
11月前
|
存储 Java 数据库连接
Mybatisplus中的主要使用注解
3.有些注解需要配合其他配置使用。例如,@Version需要配合乐观锁插件使用,@EnumValue需要配合对应的TypeHandler使用。
497 11
|
12月前
|
SQL XML Java
MyBatis——选择混合模式还是全注解模式?
在MyBatis开发中,Mapper接口的实现方式有两种:全注解模式和混合模式。全注解模式直接将SQL嵌入代码,适合小规模、简单逻辑项目,优点是直观简洁,但复杂查询时代码臃肿、扩展性差。混合模式采用接口+XML配置分离的方式,适合大规模、复杂查询场景,具备更高灵活性与可维护性,但学习成本较高且调试不便。根据项目需求与团队协作情况选择合适模式至关重要。
251 4
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
958 0
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
2301 6
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
2622 1
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
713 2
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
884 13