欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis中useGenerateKeys的使用解析

 更新時間:2021年09月24日 09:48:36   作者:空山新雨天氣晚秋  
這篇文章主要介紹了MyBatis中useGenerateKeys的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis useGenerateKeys的使用

需求

使用MyBatis往MySQL數(shù)據(jù)庫中插入一條記錄后,需要返回該條記錄的自增主鍵值。

方法:在mapper中指定keyProperty屬性,示例如下:

<insert id="insertUser" useGeneratedKeys="true" keyProperty="userId" parameterType="cn.stu.entity.UserEntity">
    insert into user(userName,password,comment)  
    values(#{userName},#{password},#{comment})  
</insert>

注意:此處可能會有坑:

如果在<insert>的右邊尖括號之后有空格,在啟動時可能會報:元素類型 "insert" 必須后跟屬性規(guī)范 ">" 或 "/>",并且,在作新增操作時會一直增不進(jìn)去而報SQL語法錯誤,碰到這類問題就把<insert>標(biāo)簽整體在敲一邊就可以了

如上所示,我們在insert中指定了keyProperty="userId",其中userId代表插入的User對象的主鍵屬性。

User.java

public class User {  
    private int userId;  
    private String userName;  
    private String password;  
    private String comment;        
    //setter and getter  
}  

UserDao.java

public interface UserDao {   
    public int insertAndGetId(User user);    
}  

測試:

Java代碼

User user = new User();  
user.setUserName("chenzhou");  
user.setPassword("xxxx");  
user.setComment("測試插入數(shù)據(jù)返回主鍵功能");  
  
System.out.println("插入前主鍵為:"+user.getUserId());  
userDao.insertAndGetId(user);//插入操作  
System.out.println("插入后主鍵為:"+user.getUserId());  

輸出:

1.插入前主鍵為:0

2.插入后主鍵為:15

查詢數(shù)據(jù)庫:

如上所示,剛剛插入的記錄主鍵id為15

小結(jié)一下吧

用了這個useGenerateKeys="true"后,不用再在寫一句關(guān)于select的SQL(降低數(shù)據(jù)庫的壓力)而直接能夠得到剛剛插進(jìn)去的那個主鍵,但是——這個屬性只能用在主鍵能自增長的數(shù)據(jù)庫里面比如MySQL可以用,但是oracle就不能用了!

對于oracle返回自增主鍵(oracle序列)如下

  • keyProperty:將查詢到主鍵值設(shè)置到parameterType指定的對象的哪個屬性
  • order:相對于insert語句來說它的執(zhí)行順序,只要不是自增主鍵,那么就設(shè)置為before
  • resultType:指定返回的結(jié)果類型

MyBatis keyProperty和useGenerateKeys

用了這個useGenerateKeys="true"后,不用再在寫一句關(guān)于select的SQL(降低數(shù)據(jù)庫的壓力)而直接能夠得到剛剛插進(jìn)去的那個主鍵,但是——這個屬性只能用在主鍵能自增長的數(shù)據(jù)庫里面比如MySQL可以用,但是oracle就不能用了!

這倆個屬性好像只能在insert語句中去使用

意思就是你在controller語句中執(zhí)行完一個insert語句后,會有一條記錄插入到了數(shù)據(jù)庫中,然后主鍵進(jìn)行了自增,正常情況下應(yīng)該是再有一條語句去數(shù)據(jù)庫中找到這個id,但是此時不用了,直接就可以拿到這個id了

看例子吧

User user = new User();  
user.setUserName("chenzhou");  
user.setPassword("xxxx");  
user.setComment("測試插入數(shù)據(jù)返回主鍵功能");  
 
System.out.println("插入前主鍵為:"+user.getUserId());  
userDao.insertAndGetId(user);//插入操作  
System.out.println("插入后主鍵為:"+user.getUserId());

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

相關(guān)文章

  • java實現(xiàn)emqx設(shè)備上下線監(jiān)聽詳解

    java實現(xiàn)emqx設(shè)備上下線監(jiān)聽詳解

    這篇文章主要為大家介紹了java實現(xiàn)emqx設(shè)備上下線監(jiān)聽詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Spring Boot DevTools使用教程

    Spring Boot DevTools使用教程

    DevTools通過提供自動重啟和LiveReload功能,使您更快、更輕松地開發(fā)Spring Boot應(yīng)用程序。這篇文章主要介紹了Spring Boot DevTools使用教程,需要的朋友可以參考下
    2018-11-11
  • Java中TCP通信的實現(xiàn)方法詳解

    Java中TCP通信的實現(xiàn)方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中TCP通信的實現(xiàn)方法,TCP通信能實現(xiàn)兩臺計算機之間的數(shù)據(jù)交互,通信的兩端,要嚴(yán)格區(qū)分為客戶端(Client)與服務(wù)端(Server),需要的朋友可以參考下
    2023-09-09
  • 詳解快速搭建Spring Boot+Spring MVC

    詳解快速搭建Spring Boot+Spring MVC

    本篇文章主要介紹了詳解快速搭建Spring Boot+Spring MVC,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 使用純java config來配置spring mvc方式

    使用純java config來配置spring mvc方式

    這篇文章主要介紹了使用純java config來配置spring mvc方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • windows如何使用bat腳本后臺啟動/停止和重啟jar包服務(wù)

    windows如何使用bat腳本后臺啟動/停止和重啟jar包服務(wù)

    這篇文章主要介紹了windows使用bat腳本后臺啟動/停止和重啟jar包服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java數(shù)組拷貝的幾種方法小結(jié)

    Java數(shù)組拷貝的幾種方法小結(jié)

    本文主要介紹了Java數(shù)組拷貝的幾種方法小結(jié),包括for循環(huán)、System.arraycopy()、Arrays.copyOf()、Arrays.copyOfRange()和clone()方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Mybatis中的like模糊查詢功能

    Mybatis中的like模糊查詢功能

    這篇文章主要介紹了Mybatis中的like模糊查詢功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Java實現(xiàn)的時間戳與date對象相互轉(zhuǎn)換功能示例

    Java實現(xiàn)的時間戳與date對象相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了Java實現(xiàn)的時間戳與date對象相互轉(zhuǎn)換功能,結(jié)合具體實例形式分析了java日期與時間戳類型的表示與轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid的示例代碼

    spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid的示例代碼

    這篇文章主要介紹了spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論