Springboot中useGeneratedKeys用法小結(jié)
在Spring Boot項(xiàng)目中,useGeneratedKeys 是 MyBatis 框架中的一個(gè)參數(shù),用于指定是否允許 JDBC 支持自動(dòng)生成主鍵。這個(gè)參數(shù)可以在三個(gè)不同的位置設(shè)置:全局配置文件、XML 映射器和接口映射器。
全局配置文件
可以在 MyBatis 的全局配置文件 mybatis-config.xml 中的 <settings> 元素內(nèi)設(shè)置 useGeneratedKeys 參數(shù)。例如:
<settings>
<setting name="useGeneratedKeys" value="true"/>
</settings>
這樣設(shè)置后,所有接口映射器中的插入操作都會(huì)嘗試獲取自動(dòng)生成的主鍵,但對(duì) XML 映射器不起作用。
XML 映射器
在具體的 XML 映射文件中,可以在 <insert> 標(biāo)簽中設(shè)置 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 對(duì)象中的屬性名,keyColumn 指定了數(shù)據(jù)庫中的列名,這樣在插入操作后,MyBatis 會(huì)將生成的主鍵值回填到對(duì)應(yīng)的 Java 對(duì)象屬性中。
接口映射器
在接口映射器中,可以使用 @Options 注解來設(shè)置 useGeneratedKeys 參數(shù)。例如:
@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 對(duì)象中的屬性,keyColumn 指定了數(shù)據(jù)庫中的列名,useGeneratedKeys 設(shè)置為 true 表示啟用自動(dòng)生成主鍵。
請(qǐng)注意,如果在接口映射器中設(shè)置了 useGeneratedKeys 參數(shù),那么這個(gè)設(shè)置會(huì)覆蓋全局配置文件中相同的設(shè)置。
如果在配置了 useGeneratedKeys 后,插入操作沒有返回預(yù)期的主鍵值,可能是因?yàn)閿?shù)據(jù)庫驅(qū)動(dòng)不支持自動(dòng)生成主鍵,或者配置有誤。確保數(shù)據(jù)庫表配置了自動(dòng)生成主鍵,并且 JDBC 驅(qū)動(dòng)支持這一特性。
到此這篇關(guān)于Springboot中useGeneratedKeys用法小結(jié)的文章就介紹到這了,更多相關(guān)Springboot useGeneratedKeys內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
idea2022創(chuàng)建javaweb項(xiàng)目步驟(超詳細(xì))
本文主要介紹了idea2022創(chuàng)建javaweb項(xiàng)目步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
深層剖析java應(yīng)用開發(fā)中MyBayis緩存
這篇文章主要為大家深層剖析java開發(fā)中MyBayis緩存,文中講解了Mybatis緩存的分類以及使用的方式,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
SpringBoot集成P6spy實(shí)現(xiàn)自定義SQL日志打印
本文主要介紹了SpringBoot集成P6spy實(shí)現(xiàn)自定義SQL日志打印,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
RestTemplate調(diào)用POST和GET請(qǐng)求示例詳解
這篇文章主要為大家介紹了RestTemplate調(diào)用POST和GET請(qǐng)求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

