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

mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式

 更新時間:2022年03月22日 14:20:24   作者:程序猿吉良吉影  
這篇文章主要介紹了mybatis-plus?Wrapper條件構(gòu)造器updateForSet更新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Wrapper條件構(gòu)造器updateForSet更新

官方文檔:https://baomidou.gitee.io/mybatis-plus-doc/#/wrapper

實體包裝器,用于處理 sql 拼接,排序,實體參數(shù)查詢等!

補充說明: 使用的是數(shù)據(jù)庫字段,不是Java屬性!

實體包裝器 EntityWrapper 繼承 Wrapper

簡單示例

翻頁查詢

public Page<T> selectPage(Page<T> page, EntityWrapper<T> entityWrapper) {
? if (null != entityWrapper) {
? ? ? entityWrapper.orderBy(page.getOrderByField(), page.isAsc());
? }
? page.setRecords(baseMapper.selectPage(page, entityWrapper));
? return page;
}

拼接sql方式 一

@Test
public void testTSQL11() {
? ? /*
? ? ?* 實體帶查詢使用方法 ?輸出看結(jié)果
? ? ?*/
? ? EntityWrapper<User> ew = new EntityWrapper<User>();
? ? ew.setEntity(new User(1));
? ? ew.where("user_name={0}", "'zhangsan'").and("id=1")
? ? ? ? ? ? .orNew("user_status={0}", "0").or("status=1")
? ? ? ? ? ? .notLike("user_nickname", "notvalue")
? ? ? ? ? ? .andNew("new=xx").like("hhh", "ddd")
? ? ? ? ? ? .andNew("pwd=11").isNotNull("n1,n2").isNull("n3")
? ? ? ? ? ? .groupBy("x1").groupBy("x2,x3")
? ? ? ? ? ? .having("x1=11").having("x3=433")
? ? ? ? ? ? .orderBy("dd").orderBy("d1,d2");
? ? System.out.println(ew.getSqlSegment());
}

括號拼接

.isNull("removor").andNew("idCard="+ idCard+" or phone="+ phone)

sql 

(removor IS NULL) AND (idCard=666 or phone=15866958266)?

拼接sql方式二

int buyCount = selectCount(Condition.create()
? ? ? ? ? ? ? ? .setSqlSelect("sum(quantity)")
? ? ? ? ? ? ? ? .isNull("order_id")
? ? ? ? ? ? ? ? .eq("user_id", 1)
? ? ? ? ? ? ? ? .eq("type", 1)
? ? ? ? ? ? ? ? .in("status", new Integer[]{0, 1})
? ? ? ? ? ? ? ? .eq("product_id", 1)
? ? ? ? ? ? ? ? .between("created_time", startDate, currentDate)
? ? ? ? ? ? ? ? .eq("weal", 1));

更新:updateForSet根據(jù)條件更新字段

.updateForSet("hits=hits+1", new EntityWrapper<T>().eq("id", id));

自定義SQL方法如何使用 Wrapper

mapper java接口方法

List<User> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);

mapper xml定義

<select id="selectMyPage" resultType="User">
? SELECT * FROM user?
? <where>
? ${ew.sqlSegment}
? </where>
</select>

關(guān)于${ew.sqlSegment} 使用了 $ 不要誤以為就會被 sql 注入,請放心使用 mp 內(nèi)部對 wrapper 進(jìn)行了字符轉(zhuǎn)義處理!

條件參數(shù)說明

查詢方式說明
setSqlSelect設(shè)置 SELECT 查詢字段
whereWHERE 語句,拼接 + WHERE 條件
andAND 語句,拼接 + AND 字段=值
andNewAND 語句,拼接 + AND (字段=值)
orOR 語句,拼接 + OR 字段=值
orNewOR 語句,拼接 + OR (字段=值)
eq等于=
allEq基于 map 內(nèi)容等于=
ne不等于<>
gt大于>
ge大于等于>=
lt小于<
le小于等于<=
like模糊查詢 LIKE
notLike模糊查詢 NOT LIKE
inIN 查詢
notInNOT IN 查詢
isNullNULL 值查詢
isNotNullIS NOT NULL
groupBy分組 GROUP BY
havingHAVING 關(guān)鍵詞
orderBy排序 ORDER BY
orderAscASC 排序 ORDER BY
orderDescDESC 排序 ORDER BY
existsEXISTS 條件語句
notExistsNOT EXISTS 條件語句
betweenBETWEEN 條件語句
notBetweenNOT BETWEEN 條件語句
addFilter自由拼接 SQL
last拼接在最后,例如:last("LIMIT 1")

注意! xxNew 都是另起 ( ... ) 括號包裹。

mybatis-plus中update更新使用注意事項

update(pojo,Wrapper)方法

封裝一個對象mcTemplate,使用update(pojo,Wrapper) ,該方法僅僅修改mcTemplate中不為空的字段,別的字段不更新,在數(shù)據(jù)庫中保持不變,如下:

mcTemplate.setStatus(TemplateStatusEnum.PASSED.getStatus());//待更新的字段
LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() ); //限定條件
Integer result = mcTemplateMapper.update(mcTemplate, lambdaUpdateWrapper); //更新mcTemplate中不為空的字段

更新的字段比較少

不想封裝成一個對象的時候,可以采取便捷方式,該方式同上只會更新設(shè)定的字段,對于其他字段不更新。

LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() )
.set(McTemplate::getStatus,1); //更新的值
Integer result = mcTemplateMapper.update(null, lambdaUpdateWrapper);

updateById(mcTemplate)方法

該方法會將所有的字段都更新,在對象mcTemplate中沒有的字段,會字段賦值null

int result = mcTemplateMapper.updateById(mcTemplate);

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

相關(guān)文章

  • Java的CGLIB動態(tài)代理深入解析

    Java的CGLIB動態(tài)代理深入解析

    這篇文章主要介紹了Java的CGLIB動態(tài)代理深入解析,CGLIB是強大的、高性能的代碼生成庫,被廣泛應(yīng)用于AOP框架,它底層使用ASM來操作字節(jié)碼生成新的類,為對象引入間接級別,以控制對象的訪問,需要的朋友可以參考下
    2023-11-11
  • 基于ScheduledExecutorService的兩種方法(詳解)

    基于ScheduledExecutorService的兩種方法(詳解)

    下面小編就為大家?guī)硪黄赟cheduledExecutorService的兩種方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Spring?MVC請求處理流程和九大組件詳解

    Spring?MVC請求處理流程和九大組件詳解

    這篇文章主要介紹了Spring?MVC請求處理流程和九大組件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié)

    本文主要介紹了java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot Aop 詳解和多種使用場景解析

    SpringBoot Aop 詳解和多種使用場景解析

    aop面向切面編程,是編程中一個很重要的思想本篇文章主要介紹的是SpringBoot切面Aop的使用和案例,對SpringBoot Aop相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn)

    java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn)

    這篇文章主要介紹了java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Springboot獲取jar包中resources資源目錄下的文件

    Springboot獲取jar包中resources資源目錄下的文件

    今天在項目中遇到一個業(yè)務(wù)場景,需要用到resources資源目錄下的文件,本文主要介紹了Springboot獲取jar包中resources資源目錄下的文件,感興趣的可以了解一下
    2023-12-12
  • mybatis動態(tài)sql之新增與更新方式

    mybatis動態(tài)sql之新增與更新方式

    這篇文章主要介紹了mybatis動態(tài)sql之新增與更新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java網(wǎng)絡(luò)編程之URL+URLconnection使用方法示例

    Java網(wǎng)絡(luò)編程之URL+URLconnection使用方法示例

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程之URL+URLconnection使用方法示例,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • java教程之二個arraylist排序的示例分享

    java教程之二個arraylist排序的示例分享

    常常遇到數(shù)組排序的問題,下面提供二個java的arraylist排序示例,需要的朋友可以參考下
    2014-03-03

最新評論

泾源县| 九龙城区| 汝南县| 江陵县| 通州市| 沧州市| 冀州市| 辽宁省| 增城市| 扬州市| 泰宁县| 屏东市| 林口县| 西畴县| 灵山县| 盘锦市| 阿鲁科尔沁旗| 东乡县| 尖扎县| 红桥区| 华蓥市| 安图县| 册亨县| 蒲城县| 长汀县| 佛学| 嘉峪关市| 偃师市| 绍兴市| 正定县| 梁平县| 胶南市| 元氏县| 新丰县| 涞水县| 江华| 满洲里市| 宜宾市| 襄城县| 固安县| 汝城县|