java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Springboot useGeneratedKeys

Springboot中useGeneratedKeys用法小结

作者:Ven%

本文主要介绍了Springboot中useGeneratedKeys用法小结,useGeneratedKeys 是 MyBatis 框架中的一个参数,用于指定是否允许 JDBC 支持自动生成主键,感兴趣的可以了解一下

在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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文