Mybatis属性useGeneratedKeys,keyProperty,keyColumn的使用
2022/4/17 6:13:48
本文主要是介绍Mybatis属性useGeneratedKeys,keyProperty,keyColumn的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
事情情景
在做一个插入操作的时候,总是报一个主键重复或者字段不能为空的错误:
原因
在A.mapper中的insert语句中,使用了useGeneratedKeys,keyProperty属性,那这两个属性是干什么用的呢?
useGeneratedKeys=true表示使用数据库自动增长的主键
keyProperty设置自增主键返回字段(用户在插入数据之后获取相应主键)
作用
知道了这两个属性是做什么的,那起到什么作用了呢?
作用: 完成不需要输入主键也能插入数据了,而且只适用于insert语句
解决方法
知道了是什么原因造成了这个问题,那么接下来就好解决了。
首先先检查了数据库中这个id字段有没有设置为自增长和非空
然后又去与A.mapper相关联的另一个B.mapper中查看相应的插入语句有没有设置这两个属性,果然没写,写上之后完美解决问题。
<insert id="insertSelective" parameterType="com.***.UserPasswordDO" keyProperty="id" useGeneratedKeys="true">
规则
1、我们使用keyProperty属性指定id为主键字段,同时使用useGeneratedKeys属性告诉MyBatis这个主键是否使用数据库的内置规则生成。
2、在数据库中设置id的自增规则
拓展
在使用keyProperty的时候,发现竟然还有个类似的属性:keyColumn,那么他是干什么用的呢?
keyColumn用于指定数据库table中的主键
也就是说这是三个属性同时使用时,则可以使用数据库中自增长的主键,并且可以将主键的值返回给keyProperty中写好的字段
总结:
useGeneratedKeys 设置为"true"表明要 MyBatis 获取由数据库自动生成的主键;
keyProperty="id"指定把获取到的主键值注入到 Student(实体类) 的 id 属性。
keyColumn是数据库中主键名,如果数据库主键名和实体类字段名都规范,可以不用keyColumn
这篇关于Mybatis属性useGeneratedKeys,keyProperty,keyColumn的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门