Springboot中useGeneratedKeys用法小结
作者:Ven%
在Spring Boot项目中,useGeneratedKeys
是 MyBatis 框架中的一个参数,用于指定是否允许 JDBC 支持自动生成主键。这个参数可以在三个不同的位置设置:全局配置文件、XML 映射器和接口映射器。
全局配置文件
可以在 MyBatis 的全局配置文件 mybatis-config.xml
中的 <settings>
元素内设置 useGeneratedKeys
参数。例如:
<settings> <setting name="useGeneratedKeys" value="true"/> </settings>
这样设置后,所有接口映射器中的插入操作都会尝试获取自动生成的主键,但对 XML 映射器不起作用。
XML 映射器
在具体的 XML 映射文件中,可以在 <insert>
标签中设置 useGeneratedKeys
属性。例如:
<insert id="addBigdataGroup" parameterType="BigdataGroup" useGeneratedKeys="true" keyProperty="groupId" keyColumn="group_id"> insert into bigdata_group (group_id, group_name, comment, business_line, create_by, remark, create_time) values(#{groupId}, #{groupName}, #{comment}, #{businessLine}, #{createBy}, #{remark}, sysdate()) </insert>
这里 keyProperty
指定了 Java 对象中的属性名,keyColumn
指定了数据库中的列名,这样在插入操作后,MyBatis 会将生成的主键值回填到对应的 Java 对象属性中。
接口映射器
在接口映射器中,可以使用 @Options
注解来设置 useGeneratedKeys
参数。例如:
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") @Insert("insert into test(name,descr,url,create_time,update_time) values(#{name},#{descr},#{url},now(),now())") Integer insertOneTest(Test test);
在这里,keyProperty
指定了 Java 对象中的属性,keyColumn
指定了数据库中的列名,useGeneratedKeys
设置为 true
表示启用自动生成主键。
请注意,如果在接口映射器中设置了 useGeneratedKeys
参数,那么这个设置会覆盖全局配置文件中相同的设置。
如果在配置了 useGeneratedKeys
后,插入操作没有返回预期的主键值,可能是因为数据库驱动不支持自动生成主键,或者配置有误。确保数据库表配置了自动生成主键,并且 JDBC 驱动支持这一特性。
到此这篇关于Springboot中useGeneratedKeys用法小结的文章就介绍到这了,更多相关Springboot useGeneratedKeys内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!