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

MyBatis-Plus中更新操作的兩種實(shí)現(xiàn)

 更新時(shí)間:2023年04月12日 15:59:50   作者:心態(tài)還需努力呀  
本文主要介紹了MyBatis-Plus中更新操作的兩種實(shí)現(xiàn),主要是通過id更新和條件更新,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文學(xué)習(xí)MP中的更新操作方法,帶大家一起查看源碼,了解更新操作的方法。學(xué)會(huì)熟練地去運(yùn)用更新方法解決自己在項(xiàng)目中的問題。

一、通過id更新

1.查看mapper繼承的BaseMapper下通過id更新的方法updateById可看出參數(shù)傳入的是一個(gè)對(duì)象。并且返回的是一個(gè)int類型的值, 該值的含義就是受影響的行數(shù)。為0表示更新失敗,作為以后開發(fā)中要處理的邏輯有用處。如下圖所示:

 2.編寫測(cè)試類testUpdateById方法,在方法中通過調(diào)用MP的updateById對(duì)數(shù)據(jù)庫表中的名字和郵箱進(jìn)行修改。

//測(cè)試通過id更新數(shù)據(jù)
@Test
public void testUpdateById(){
    User user=new User();
    user.setUserId(1);//更新id=?的數(shù)據(jù)
    //更新內(nèi)容,可多個(gè)
    user.setUserName("心態(tài)");
    user.setUserEmail("3052273528@qq.com");
    int result = userMapper.updateById(user);
    System.out.println(result);
 
}

 3.運(yùn)行上面的方法得出結(jié)果,查看生成的sql語句:如下圖所示,可看到sql語句把表中的user_id字段作為條件,對(duì)user表中的user_name、user_email字段的值進(jìn)行修改。

 4.查詢修改結(jié)果調(diào)用通過id查詢的方法查詢user_id=1的表信息是否發(fā)生改變。

//測(cè)試通過id查詢
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

效果如下圖所示,可看到用戶名和郵箱已經(jīng)變?yōu)榱诵薷暮蟮闹担薷某晒Γ。?/p>

二、條件更新

在做條件更新時(shí)我們要用到MP中的update方法,先來看下源碼:要傳入2個(gè)參數(shù),第一個(gè)是實(shí)體,就是要進(jìn)行修改的數(shù)據(jù)。第二個(gè)傳入的是Wrapper是要進(jìn)行更新的條件。

int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

2.1 使用QueryWrapper進(jìn)行條件更新

我們先測(cè)試QueryWrapper對(duì)數(shù)據(jù)進(jìn)行條件更新:

在測(cè)試類中編寫testUpdateQw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài)還需努力呀~)和郵箱改為(2132444@qq.com)。

我們把要更新的數(shù)據(jù)放到User類里,條件就需要用到QueryWrapper,首先需要new出來,然后用.eq調(diào)用方法,eq方法里也有兩個(gè)參數(shù),第一個(gè)是表字段名,第二個(gè)是該字段的值。如下圖所示:

然后即可寫出該方法的內(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);
    }

 查看運(yùn)行結(jié)果,通過生成的sql代碼,可看出和我們編寫的代碼一樣,條件是user_status字段,要修改的字段是user_name、user_email值。

 注:再次強(qiáng)調(diào)eq方法中的第一個(gè)參數(shù)是數(shù)據(jù)庫表的字段,而不是屬性名。

2.2 使用UpdateWrapper進(jìn)行條件更新

這次我們測(cè)試UpdateWrapper對(duì)數(shù)據(jù)進(jìn)行條件更新:

在測(cè)試類中編寫testUpdateUw()方法,修改用戶狀態(tài)為1的用戶名改為(心態(tài))和郵箱改為(8888888@qq.com)。

要修改的數(shù)據(jù)和條件都要放到UpdateWrapper,首先需要new出來,然后用.set調(diào)用方法,set方法里也有兩個(gè)參數(shù),第一個(gè)是表字段名,第二個(gè)是該字段的值。如下圖所示:

但在寫update參數(shù)時(shí),因User設(shè)置值的功能被UpdateWrapper實(shí)現(xiàn)了,所以第一個(gè)參數(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);
    }

運(yùn)行效果圖,可看到和上面方法生成的sql語句是一樣的,也能進(jìn)行更新操作:

注:強(qiáng)調(diào)eq方法中的第一個(gè)參數(shù)是數(shù)據(jù)庫表的字段,而不是屬性名。 UpdateWrapper中的set方法也是一樣的。

總結(jié) 

更新操作也是我們?cè)趯?shí)際寫代碼中必不可少的,掌握MP的更新操作,不管是通過id更新還是條件更新中的QueryWrapper、UpdateWrapper來更新。學(xué)會(huì)的話會(huì)很方便以后的開發(fā),節(jié)省大量的時(shí)間。雖說條件更新中這兩個(gè)方法實(shí)現(xiàn)的結(jié)果一樣,但最好都掌握,都了解每個(gè)方法的用法。在實(shí)際編寫項(xiàng)目時(shí)習(xí)慣用哪個(gè)看個(gè)人。這也是更新操作的全部?jī)?nèi)容。更多相關(guān)MyBatis-Plus 更新操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家

相關(guān)文章

  • JSON--List集合轉(zhuǎn)換成JSON對(duì)象詳解

    JSON--List集合轉(zhuǎn)換成JSON對(duì)象詳解

    這篇文章主要介紹了List集合轉(zhuǎn)換成JSON對(duì)象,小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。
    2017-01-01
  • Java中Stream流對(duì)多個(gè)字段進(jìn)行排序的方法

    Java中Stream流對(duì)多個(gè)字段進(jìn)行排序的方法

    我們?cè)谔幚頂?shù)據(jù)的時(shí)候經(jīng)常會(huì)需要進(jìn)行排序后再返回給前端調(diào)用,比如按照時(shí)間升序排序,前端展示數(shù)據(jù)就是按時(shí)間先后進(jìn)行排序,下面這篇文章主要給大家介紹了關(guān)于Java中Stream流對(duì)多個(gè)字段進(jìn)行排序的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • java編譯時(shí)出現(xiàn)使用了未經(jīng)檢查或不安全的操作解決方法

    java編譯時(shí)出現(xiàn)使用了未經(jīng)檢查或不安全的操作解決方法

    這篇文章主要介紹了java編譯時(shí)出現(xiàn)使用了未經(jīng)檢查或不安全的操作的解決方法,需要的朋友可以參考下
    2014-03-03
  • java項(xiàng)目中classpath指向哪里

    java項(xiàng)目中classpath指向哪里

    這篇文章介紹了java項(xiàng)目中classpath指向哪里及工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 一文搞懂Java中的注解和反射

    一文搞懂Java中的注解和反射

    這篇文章主要給大家介紹了關(guān)于Java中注解和反射的原理及使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 實(shí)例詳解Java中ThreadLocal內(nèi)存泄露

    實(shí)例詳解Java中ThreadLocal內(nèi)存泄露

    這一篇文章我們來分析一個(gè)Java中ThreadLocal內(nèi)存泄露的案例。分析問題的過程比結(jié)果更重要,理論結(jié)合實(shí)際才能徹底分析出內(nèi)存泄漏的原因。
    2016-08-08
  • Java面向?qū)ο蠡A(chǔ),類,變量,方法

    Java面向?qū)ο蠡A(chǔ),類,變量,方法

    這篇文章主要介紹了Java面向?qū)ο蠡A(chǔ),類,變量,方法,需要的朋友可以參考下
    2020-10-10
  • java Class文件內(nèi)部結(jié)構(gòu)解析過程詳解

    java Class文件內(nèi)部結(jié)構(gòu)解析過程詳解

    java class的文件結(jié)構(gòu),java class文件結(jié)構(gòu)是基于字節(jié)流的,用unicode進(jìn)行編碼,下面說說java Class文件內(nèi)部結(jié)構(gòu)分析
    2013-11-11
  • Java基礎(chǔ)之final關(guān)鍵字作用案例

    Java基礎(chǔ)之final關(guān)鍵字作用案例

    這篇文章主要介紹了Java基礎(chǔ)之final關(guān)鍵字作用案例,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論