mybatis插入数据后返回自增主键ID详解
1.场景介绍:
开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎么办呢?
2.插入数据返回自增主键ID方法(一)
在映射器中配置获取记录主键值
- xml映射:
在xml中定义useGeneratedKeys为true,返回主键id的值,keyProperty和keyColumn分别代表数据库记录主键字段和java对象成员属性名
<!-- 插入数据:返回记录主键id值 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id" keyColumn="id">insert into stu (name,age) values (#{name},#{age})
</insert>
- 接口映射器
在接口映射器中通过注解@Options
分别设置参数useGeneratedKeys,keyProperty,keyColumn值
// 返回主键字段id值
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
@Insert("insert into stu (name,age) values (#{name},#{age})")
void insert(Student stu);
获取新添加记录主键字段值
需要注意的是,在MyBatis中添加操作返回的是记录数并非记录主键id。因此,如果需要获取新添加记录的主键值,需要在执行添加操作之后,直接读取Java对象的主键属性。
Integer rows = sqlSession.getMapper(StuMapper.class).insertOneTest(student);
System.out.println("rows = " + rows); // 添加操作返回记录数
System.out.println("id = " + student.getId()); // 执行添加操作之后通过Java对象获取主键属性值
添加批量记录时返回主键ID
如果希望执行批量添加并返回各记录主键字段值,只能在xml映射器中实现,在接口映射器中无法做到。
<!-- 批量添加数据,并返回主键字段 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">insert into stu (name,age) values<foreach collection="list" separator="," item="t">(#{t.name},#{t.age})</foreach>
</insert>
可以看到,执行批量添加并返回记录主键值的xml映射器配置,跟添加单条记录时是一致的。不同的地方仅仅是使用了foreach元素构建批量添加语句。
转载于:https://www.cnblogs.com/charlypage/p/11253610.html
mybatis插入数据后返回自增主键ID详解相关推荐
- Mybatis 插入数据后返回自增主键ID
1 xml 映射文件中处理 在映射器中配置获取记录主键值 在xml中 insert 标签中定义 : useGeneratedKeys为true,用来设置返回主键id的值, keyProperty 代表 ...
- 七种MYSQL插入数据后返回自增主键ID的方法
我们都知道,mysql中的insert插入之后会有返回值,返回的是影响的行数,也就是说,成功插入一条数据之后返回的是1,失败则返回0.那么,很多时候我们都想要得到最后插入的id值,下面七种方法均可,结 ...
- mybatis 插入数据后返回自增id
useGeneratedKeys="true" keyProperty="id"> sql全部内容: <insert id="insert ...
- mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql c接口返回自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql插入数据后返回自增id
mysql插入数据后返回自增id 使用<insert 中的useGeneratedKeys 和 keyProperty 两个属性 在Mybatis Mapper文件中添加属性 useGenera ...
- 关于Mybatis的insert方法返回值(将返回值受影响条数改为插入后的自增主键id)
今天做ssm项目的时候有一个这样的需求--我借阅一本书然后生成一条借阅记录(借阅记录的主键是递增的"borrowNum"),然后将这条记录的主键返回,在往上查阅资料后知道,只要在对 ...
- mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20
一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...
- mysql添加数据的同时返回自增主键id
方法一(实测可用): <insert id="add" useGeneratedKeys="true" keyProperty="id" ...
最新文章
- Java 理论与实践: 非阻塞算法简介
- 任意角度人脸检测pcn
- change to port 80 instead of 8069
- 更改SYS密码,expiry_date 过期时间 没有更新,普通用户更改密码会更新
- java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区
- 【洛谷P4841】城市规划【指数型生成函数】【麦克劳林级数】【多项式对数】
- 2017西安交大ACM小学期 毁灭序列[倒跑并查集]
- “云”上存储初显规模 如何架构是关键
- 自兴人工智能---认识python语言的基础数据类型和操作
- Qt控件中的属性sizePolicy说明
- 易到用车提现再度被延期?!声明:因贾跃亭所欠债务导致
- tornado总结4-html模板使用2
- 51. Element replaceChild() 方法
- 自适应滤波器(一)LMS自适应滤波器
- 腾讯魏巍:Eunomia云原生资源编排优化
- 网站调用百度地图展示位置,调用百度开放平台api 动态静态调用
- 小样本学习(few-shot learning)之——原形网络(Prototypical Networks)
- Coding:用指针的方法,将字符串首尾对调输出
- .net 2.0 下的FTP搜索引擎实现
- 细粒度控制Grails程序的日志输出
热门文章
- 众智日照分析软件_飞时达CAD日照分析计算软件FastSUN V14.0.1发布升级
- RPM 软件包名中的 el5、el6、el7 是什么?
- java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...
- pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...
- C 和C语言条件运算符的区别
- c语言实验报告5数组,c语言实验报告五一维数组.doc
- 拆分js文件_2021入门Webpack,看这篇就够了:Webpack.config.js 解析
- oracle创建数据库用户并授权,oracle创建数据库、表空间、用户并授权
- kali使用笔记本自带无线网卡_无线网卡?那是什么?
- mysql用户名锁定_MySQL用户锁定