最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis執(zhí)行插入語句后并返回主鍵ID問題

 更新時間:2023年03月07日 08:28:47   作者:溫娉哲  
這篇文章主要介紹了Mybatis執(zhí)行插入語句后并返回主鍵ID問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

我們知道JDBC可以實現(xiàn)插入語句后返回主鍵Id,那mybatis可以實現(xiàn)嗎?

答案是肯定的。

1、MySQL數(shù)據(jù)庫設(shè)置ID自增情況

 <insert id="insertUser" parameterType="com.crush.mybatisplus.entity.User">
     INSERT  INTO tb_user (username,password) VALUES(#{username},#{password});
     <selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
         SELECT LAST_INSERT_ID()
     </selectKey>
 </insert>

(1)這里設(shè)置的MySQL的主鍵是自增的,SELECT LAST_INSERT_ID()返回的是最后一個ID值的意思。

(2)傳入的參數(shù)必須為對象,不能為string,int之類的單個參數(shù)

(3)order屬性,取值范圍BEFORE/ AFTER,指定是在insert語句前還是后執(zhí)行selectKey操作。AFTER一般用于MySQL自增的情況下,BEFORE一般用于自定義的ID的獲取。

(4)keyProperty屬性,默認(rèn)值unset,用于設(shè)置getGeneratedKeys方法或 selectKey子元素返回值將賦值到領(lǐng)域模型的哪個屬性中,也就是實體類中,對應(yīng)數(shù)據(jù)庫的主鍵id。

(5)最后在實體類中,要有主鍵的get與set方法,滿足后,在impl層controller層,直接實體類.getId()即可獲取本次插入后的主鍵ID,返回前端即可。

示例:

@Override
 public Long insert(User user) {
     return  userMapper.insertUser(user)>0?user.getId():null;
 }

2、使用UUID自增主鍵

<insert id="insertUser2" parameterType="com.crush.mybatisplus.entity.User">
     <selectKey keyProperty="id" order="BEFORE" resultType="String">
         select uuid()
     </selectKey>
     INSERT INTO tb_user (id,username,password) VALUES(#{id},#{username},#{password});
 </insert>

3、mybatis-plus在執(zhí)行插入語句后返回自定義ID

可以直接使用mybatis-plus的save方法,或者mapper層的insert方法

它都會將返回的結(jié)果自動填充進(jìn)你映射的實體類,從而可以直接獲取到你的數(shù)據(jù)

 @PostMapping("/add3")
 public Object add3(@RequestBody User user){
     return tbUserService.save(user)==true?user.getId():"插入失敗";
 }

還可以直接將User打印出來看一下:

 @PostMapping("/add3")
 public Object add3(@RequestBody User user){
     tbUserService.save(user);
     System.out.println("執(zhí)行完插入后的User:"+user);
     return user.getId();
 }
 

執(zhí)行完插入后的

User:User(id=890909294458048512, username=123456, password=123456, deleted=0, createTime=2021-09-24T10:35:36.873908700, updateTime=2021-09-24T10:35:36.873908700) 

還可以使用注解方式,不過注解那種就是將上面mybatis的方法搬到注解上了

 @Insert(value = "INSERT INTO t_XXXX" +
         "XXX,XXX,XXX " +
         "VALUES (XXX,XXX,XXX)")
 @SelectKey(statement="select LAST_INSERT_ID()",keyProperty = "id",before = false,resultType = Long.class)
 Integer testInsert1(MessageMould messageMould);
 

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA中反射機制和模塊化的深入講解

    JAVA中反射機制和模塊化的深入講解

    很多剛學(xué)Java反射的同學(xué)可能對反射技術(shù)一頭霧水,為什么要學(xué)習(xí)反射,學(xué)習(xí)反射有什么作用,下面這篇文章主要給大家介紹了關(guān)于JAVA中反射機制和模塊化的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java郵件發(fā)送程序(可以同時發(fā)給多個地址、可以帶附件)

    Java郵件發(fā)送程序(可以同時發(fā)給多個地址、可以帶附件)

    不錯的功能比較齊全的郵件發(fā)送程序源碼
    2008-07-07
  • java面向?qū)ο笤O(shè)計原則之開閉原則示例解析

    java面向?qū)ο笤O(shè)計原則之開閉原則示例解析

    這篇文章主要介紹了java面向?qū)ο笤O(shè)計原則之開閉原則的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • 一篇文章帶你入門java運算符

    一篇文章帶你入門java運算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運算符,結(jié)合實例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運算符、邏輯運算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-08-08
  • Component-Scan 不掃描jar里面的類問題

    Component-Scan 不掃描jar里面的類問題

    這篇文章主要介紹了Component-Scan 不掃描jar里面的類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot+Swagger-ui自動生成API文檔

    SpringBoot+Swagger-ui自動生成API文檔

    今天小編就為大家分享一篇關(guān)于SpringBoot+Swagger-ui自動生成API文檔,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 詳解Spring框架入門

    詳解Spring框架入門

    這篇文章主要介紹了詳解Spring框架入門,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • java如何將map數(shù)據(jù)存入到實體類對象中

    java如何將map數(shù)據(jù)存入到實體類對象中

    在Java編程中,經(jīng)常需要將Map集合中的數(shù)據(jù)轉(zhuǎn)換為實體類對象,這可以通過反射機制實現(xiàn),即通過遍歷Map對象,使用反射根據(jù)鍵名對應(yīng)實體類的屬性名,動態(tài)調(diào)用setter方法將值設(shè)置到實體對象中,這樣的操作使得數(shù)據(jù)從Map結(jié)構(gòu)轉(zhuǎn)移到了具體的JavaBean中,便于后續(xù)的操作和管理
    2024-09-09
  • Java多線程基本概念以及避坑指南

    Java多線程基本概念以及避坑指南

    多線程之于進(jìn)程的理解,可以類比多進(jìn)程之于操作系統(tǒng),多線程指在單個程序中可以同時運行多個不同的線程執(zhí)行不同的任務(wù),這篇文章主要給大家介紹了關(guān)于Java多線程基本概念以及避坑指南的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • @Autowired注入為null問題原因分析

    @Autowired注入為null問題原因分析

    這篇文章主要介紹了@Autowired注入為null問題原因分析嗎,小編覺得挺不錯的,對日后比較有幫助,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論

黎川县| 共和县| 文水县| 昭平县| 东兰县| 荣成市| 乐亭县| 淮阳县| 鹿泉市| 新宁县| 东山县| 囊谦县| 神农架林区| 泸水县| 永清县| 石门县| 南木林县| 高阳县| 泰来县| 兖州市| 延庆县| 西贡区| 渭南市| 万山特区| 临武县| 龙井市| 四子王旗| 松江区| 凯里市| 邹城市| 墨竹工卡县| 洞头县| 武威市| 通许县| 平潭县| 万年县| 水富县| 象山县| 滨州市| 台中县| 江北区|