面试官问:Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗? 我:看我回答...
生活随笔
收集整理的這篇文章主要介紹了
面试官问:Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗? 我:看我回答...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Mybatis執行插入語句后可以返回主鍵ID嗎?
在想寫什么內容的時候,正好看到一個基礎面試題上有這個問題,就把它記錄下來了。
👨?💻面試官:你說Mybatis執行插入語句后可以返回主鍵ID嗎??如果能的話,能否實現一下。
🙋?我:當然是可以的,連JDBC都能做到的事情,Mybatis也能做到的。
開始敲代碼…
1.1、Mysql數據庫設置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>解釋:
如:
@Overridepublic Long insert(User user) {return userMapper.insertUser(user)>0?user.getId():null;}1.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>結果和上文是一樣的。
二、Mybatis-Plus在執行插入語句后返回自定義ID
👨?💻面試官:那你會用Mybatis-Plus嗎?Mybatis-Plus如何做這件事情啊,有簡單的方式嗎?
🙋?我:還好學過,正好能回答這個問題。
一步一步道來:
可以直接使用Mybatis-Plus的sava方法,或者mapper層的insert方法,它都會將返回的結果自動填充進你映射的的實體類。從而可以直接獲取到你的數據。
@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("執行完插入后的User:"+user);return user.getId();} 執行完插入后的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);三、自言自語
本文就是簡單介紹了,具體使用具體情況具體分析啦。
你好,我是博主寧在春:主頁
希望本篇文章能讓你感到有所收獲!!!
祝 我們:待別日相見時,都已有所成。
總結
以上是生活随笔為你收集整理的面试官问:Mybatis和Mybatis-Plus执行插入语句后可以返回主键ID吗? 我:看我回答...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Security 登录认证流程详细分析
- 下一篇: 今天,我们来详细的聊一聊SpringBo