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

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

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

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

答案是肯定的。

1、MySQL數(shù)據(jù)庫(kù)設(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()返回的是最后一個(gè)ID值的意思。

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

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

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

(5)最后在實(shí)體類中,要有主鍵的get與set方法,滿足后,在impl層controller層,直接實(shí)體類.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í)行插入語(yǔ)句后返回自定義ID

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

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

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

還可以直接將User打印出來(lái)看一下:

 @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é)

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

相關(guān)文章

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

    JAVA中反射機(jī)制和模塊化的深入講解

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

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

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

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

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

    一篇文章帶你入門java運(yùn)算符

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

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

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

    SpringBoot+Swagger-ui自動(dòng)生成API文檔

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

    詳解Spring框架入門

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

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

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

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

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

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

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

最新評(píng)論

甘孜县| 齐齐哈尔市| 湘潭县| 田阳县| 吴堡县| 宝清县| 博湖县| 威信县| 原平市| 乐平市| 隆化县| 清涧县| 南平市| 达州市| 陈巴尔虎旗| 安化县| 甘德县| 安阳县| 青河县| 子洲县| 黎城县| 石渠县| 鄂托克前旗| 镇安县| 手游| 金山区| 阿图什市| 布拖县| 临桂县| 紫云| 楚雄市| 奉节县| 万宁市| 洪江市| 郎溪县| 沁源县| 白银市| 体育| 芒康县| 固始县| 伊通|