MyBatis-Plus中更新操作的兩種實現(xiàn)
前言
本文學(xué)習(xí)MP中的更新操作方法,帶大家一起查看源碼,了解更新操作的方法。學(xué)會熟練地去運用更新方法解決自己在項目中的問題。
一、通過id更新
1.查看mapper繼承的BaseMapper下通過id更新的方法updateById可看出參數(shù)傳入的是一個對象。并且返回的是一個int類型的值, 該值的含義就是受影響的行數(shù)。為0表示更新失敗,作為以后開發(fā)中要處理的邏輯有用處。如下圖所示:
2.編寫測試類testUpdateById方法,在方法中通過調(diào)用MP的updateById對數(shù)據(jù)庫表中的名字和郵箱進行修改。
//測試通過id更新數(shù)據(jù) @Test public void testUpdateById(){ User user=new User(); user.setUserId(1);//更新id=?的數(shù)據(jù) //更新內(nèi)容,可多個 user.setUserName("心態(tài)"); user.setUserEmail("3052273528@qq.com"); int result = userMapper.updateById(user); System.out.println(result); }
3.運行上面的方法得出結(jié)果,查看生成的sql語句:如下圖所示,可看到sql語句把表中的user_id字段作為條件,對user表中的user_name、user_email字段的值進行修改。
4.查詢修改結(jié)果調(diào)用通過id查詢的方法查詢user_id=1的表信息是否發(fā)生改變。
//測試通過id查詢 @Test public void testSelectById(){ User user = userMapper.selectById(1L); System.out.println(user); }
效果如下圖所示,可看到用戶名和郵箱已經(jīng)變?yōu)榱诵薷暮蟮闹?,修改成功!?/p>
二、條件更新
在做條件更新時我們要用到MP中的update方法,先來看下源碼:要傳入2個參數(shù),第一個是實體,就是要進行修改的數(shù)據(jù)。第二個傳入的是Wrapper是要進行更新的條件。
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
2.1 使用QueryWrapper進行條件更新
我們先測試QueryWrapper對數(shù)據(jù)進行條件更新:
在測試類中編寫testUpdateQw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài)還需努力呀~)和郵箱改為(2132444@qq.com)。
我們把要更新的數(shù)據(jù)放到User類里,條件就需要用到QueryWrapper,首先需要new出來,然后用.eq調(diào)用方法,eq方法里也有兩個參數(shù),第一個是表字段名,第二個是該字段的值。如下圖所示:
然后即可寫出該方法的內(nèi)容:
//根據(jù)條件更新QueryWrapper用法 @Test public void testUpdateQw(){ User user=new User(); user.setUserName("心態(tài)還需努力呀~"); user.setUserEmail("2132444@qq.com"); QueryWrapper<User> wrapper=new QueryWrapper<>(); wrapper.eq("user_status","1"); int result= userMapper.update(user, wrapper); System.out.println("result=> "+result); }
查看運行結(jié)果,通過生成的sql代碼,可看出和我們編寫的代碼一樣,條件是user_status字段,要修改的字段是user_name、user_email值。
注:再次強調(diào)eq方法中的第一個參數(shù)是數(shù)據(jù)庫表的字段,而不是屬性名。
2.2 使用UpdateWrapper進行條件更新
這次我們測試UpdateWrapper對數(shù)據(jù)進行條件更新:
在測試類中編寫testUpdateUw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài))和郵箱改為(8888888@qq.com)。
要修改的數(shù)據(jù)和條件都要放到UpdateWrapper,首先需要new出來,然后用.set調(diào)用方法,set方法里也有兩個參數(shù),第一個是表字段名,第二個是該字段的值。如下圖所示:
但在寫update參數(shù)時,因User設(shè)置值的功能被UpdateWrapper實現(xiàn)了,所以第一個參數(shù)為null即可,代碼如下:
//根據(jù)條件更新UpdateWrapper用法 @Test public void testUpdateUw(){ UpdateWrapper<User> wrapper=new UpdateWrapper<>(); wrapper.set("user_name","心態(tài)").set("user_email","8888888@qq.com")//更新的數(shù)據(jù) .eq("user_status","1");//更新的條件 int result= userMapper.update(null, wrapper); System.out.println("result=> "+result); }
運行效果圖,可看到和上面方法生成的sql語句是一樣的,也能進行更新操作:
注:強調(diào)eq方法中的第一個參數(shù)是數(shù)據(jù)庫表的字段,而不是屬性名。 UpdateWrapper中的set方法也是一樣的。
總結(jié)
更新操作也是我們在實際寫代碼中必不可少的,掌握MP的更新操作,不管是通過id更新還是條件更新中的QueryWrapper、UpdateWrapper來更新。學(xué)會的話會很方便以后的開發(fā),節(jié)省大量的時間。雖說條件更新中這兩個方法實現(xiàn)的結(jié)果一樣,但最好都掌握,都了解每個方法的用法。在實際編寫項目時習(xí)慣用哪個看個人。這也是更新操作的全部內(nèi)容。更多相關(guān)MyBatis-Plus 更新操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家
相關(guān)文章
JSON--List集合轉(zhuǎn)換成JSON對象詳解
這篇文章主要介紹了List集合轉(zhuǎn)換成JSON對象,小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。2017-01-01java編譯時出現(xiàn)使用了未經(jīng)檢查或不安全的操作解決方法
這篇文章主要介紹了java編譯時出現(xiàn)使用了未經(jīng)檢查或不安全的操作的解決方法,需要的朋友可以參考下2014-03-03java Class文件內(nèi)部結(jié)構(gòu)解析過程詳解
java class的文件結(jié)構(gòu),java class文件結(jié)構(gòu)是基于字節(jié)流的,用unicode進行編碼,下面說說java Class文件內(nèi)部結(jié)構(gòu)分析2013-11-11Java基礎(chǔ)之final關(guān)鍵字作用案例
這篇文章主要介紹了Java基礎(chǔ)之final關(guān)鍵字作用案例,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07