Mybatis在新增某个数据后,如何获取新增数据的id

在某些业务中,我们在新增一条数据之后,需要拿到这条数据的id来对这条数据进行后续的一个操作,如何拿取id呢?

使用的是<insert> 中的useGeneratedKeys 和 keyProperty 两个属性

1.在Mybatis Mapper文件中添加属性 "useGeneratedKeys"和"keyProperty",其中 keyProperty 是 Java 对象的属性名,而不是表格的字段名。

xml 复制代码
<insert id="insert" parameterType="Spares"  
    useGeneratedKeys="true" keyProperty="id">  
    insert into system(name) values(#{name})  
</insert> 

2.Mybatis 执行完插入语句后,自动将自增长值赋值给对象 systemBean(指的是你自己创建的对象) 的属性id。因此,可通过 systemBean 对应的 getter 方法获取!

java 复制代码
int count = systemService.insert(systemBean);  
int id = systemBean.getId(); //获取到的即为新插入记录的ID 

【注意事项】

  1. Mybatis Mapper 文件中,"useGeneratedKeys" 和 "keyProperty" 必须添加,而且 keyProperty 一定得和 java 对象的属性名称一直,而不是表格的字段名。

  2. java Dao中的 Insert 方法,传递的参数必须为 java 对象,也就是 Bean,而不能是某个参数。

相关推荐
半城抹茶14 小时前
关于更新字段为空值——MybatisPlus框架
java·mybatis
雾喔16 小时前
Java的缓存
java·缓存·mybatis
等什么君!17 小时前
Mybatis缓存机制(一级缓存和二级缓存)
java·缓存·mybatis
Warren9820 小时前
MySQL DDL数据定义语句
数据库·spring boot·笔记·mysql·oracle·tomcat·mybatis
好奇的菜鸟1 天前
在Spring Boot + MyBatis中优雅处理多表数据清洗:基于XML的配置化方案
xml·spring boot·mybatis
岁岁岁平安1 天前
SpringMVC学习(controller层加载控制与(业务、功能)bean加载控制、Web容器初始化配置类)(3)
java·学习·spring·mybatis·springmvc
2401_853275731 天前
能简述一下动态 SQL 的执行原理吗
java·sql·mybatis
neeef_se2 天前
IDEA搭建SpringBoot,MyBatis,Mysql工程项目
spring boot·intellij-idea·mybatis
阴阳怪气乌托邦2 天前
MyBatis与其使用方法讲解
mybatis
Junerly2 天前
数据追踪插件:实现高效数据变更记录与管理的利器
mybatis