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

MyBatis中useGenerateKeys的使用解析

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

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>的右邊尖括號之后有空格,在啟動(dòng)時(shí)可能會報(bào):元素類型 "insert" 必須后跟屬性規(guī)范 ">" 或 "/>",并且,在作新增操作時(shí)會一直增不進(jìn)去而報(bào)SQL語法錯(cuò)誤,碰到這類問題就把<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é)一下吧

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

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

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

MyBatis keyProperty和useGenerateKeys

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

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

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

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

相關(guān)文章

最新評論

宽城| 南宁市| 关岭| 疏附县| 中牟县| 安仁县| 电白县| 高青县| 洞头县| 瑞安市| 北辰区| 海晏县| 独山县| 临朐县| 公主岭市| 通道| 遂平县| 庆安县| 香格里拉县| 温泉县| 宜都市| 巴林左旗| 三原县| 永城市| 贵州省| 平安县| 三江| 绥芬河市| 忻城县| 乡城县| 贵德县| 隆化县| 新巴尔虎右旗| 台江县| 宁陵县| 定陶县| 长汀县| 扎兰屯市| 阳原县| 武定县| 五华县|