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

MyBatisPlus-QueryWrapper多條件查詢及修改方式

 更新時間:2022年06月27日 10:18:30   作者:小和尚敲木頭  
這篇文章主要介紹了MyBatisPlus-QueryWrapper多條件查詢及修改方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

gt、ge、lt、le、isNull、isNotNull

大于 >

例: gt("age", 18) → age > 18

ge 大于等于 >=

例: ge("age", 18) → age >= 18

lt 小于 <

例: lt("age", 18) → age < 18

le 小于等于 <=

例: le("age", 18) → age <= 18

isNUll 字段 IS NULL

例: isNull("name") → name is null

isNotNull 字段 IS NOT NULL

例: isNotNull("name") → name is not null 

@Test
public void queryWrapperOne() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.
            isNull("name")
            .ge("age", 23)
            .isNotNull("email");
    // 邏輯刪除
    int result = userMapper.delete(queryWrapper);
    System.out.println(result);
    // 最終的語句為:UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL
}

eq、ne

eq 等于 =

例: eq("name", "老王") → name = '老王'

ne 不等于 <>

例: ne("name", "老王") → name <> '老王' 

@Test
public void queryWrapperTwo() {
? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? queryWrapper.eq("name", "BNTang");
? ? // selectOne:返回的是一條記錄,當(dāng)出現(xiàn)多條時會報錯
? ? User user = userMapper.selectOne(queryWrapper);
? ? System.out.println(user);
}

between、notBetween

BETWEEN 值1 AND 值2

例: between("age", 18, 30) → age between 18 and 30

NOT BETWEEN 值1 AND 值2

例: notBetween("age", 18, 30) → age not between 18 and 30

allEq

allEq 全部 eq(或個別 isNull)

個別參數(shù)說明:

params: key 為數(shù)據(jù)庫字段名, value 為字段值

如果想表示 null isNull,則在 value 取值的時候傳入一個 null, 為 null 時調(diào)用 isNull 方法, 為false時則忽略value為null的,也就是不拼接 value 為 null 的查詢條件字段

例1: allEq({id:1,name:"老王",age:null})→id = 1 and name = '老王' and age is null

例2: allEq({id:1,name:"老王",age:null}, false)→id = 1 and name = '老王'

@Test
public void queryWrapperFour() {
? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? Map<String, Object> queryParamsMap = new HashMap<>();
? ? queryParamsMap.put("id", 1373266771933462530L);
? ? queryParamsMap.put("name", "BNTang");
? ? queryParamsMap.put("age", 23);
? ? queryWrapper.allEq(queryParamsMap);
? ? List<User> users = userMapper.selectList(queryWrapper);
? ? users.forEach(System.out::println);
}

個別參數(shù)說明

filter: 過濾函數(shù), 是否允許字段傳入比對條件中

params 與 null、IsNull 同上

例1: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null})→name = '老王' and age is null

例2: allEq((k,v) -> k.indexOf("a") >= 0, {id:1,name:"老王",age:null}, false)→name = '老王'

如上圖可看到,只添加了一個 id 查詢的條件因為我寫的過濾條件為要包含 i 這個字符串,所以只有第一個 key, value 包含了所以就只添加了 id

like、notLike、likeLeft、likeRight

LIKE '%值%'

例: like("name", "王")→name like '%王%'

NOT LIKE '%值%'

例: notLike("name", "王")→name not like '%王%'

LIKE '%值'

例: likeLeft("name", "王")→name like '%王'

LIKE '值%'

例: likeRight("name", "王")→name like '王%'

@Test
public void queryWrapperFive() {
? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? queryWrapper
? ? ? ? ? ? .notLike("name", "BNTang")
? ? ? ? ? ? .likeRight("email", "zq");
? ? // 返回值是Map列表
? ? List<Map<String, Object>> users = userMapper.selectMaps(queryWrapper);
? ? users.forEach(System.out::println);
}

in、notIn、inSql、notinSql、exists、notExists

字段 IN (value.get(0), value.get(1), ...)

例: in("age",{1,2,3})→age in (1,2,3)

字段 NOT IN (value.get(0), value.get(1), ...)

例: notIn("age",{1,2,3})→age not in (1,2,3)

字段 IN ( sql語句 )

例: inSql("age", "1,2,3,4,5,6")→age in (1,2,3,4,5,6)

例: inSql("id", "select id from table where id < 3")→id in (select id from table where id < 3)

字段 NOT IN ( sql語句 )

例: notInSql("age", "1,2,3,4,5,6")→age not in (1,2,3,4,5,6)

例: notInSql("id", "select id from table where id < 3")→id not in (select id from table where id < 3)

拼接 EXISTS ( sql語句 )

例: exists("select id from table where age = 1")→exists (select id from table where age = 1)

拼接 NOT EXISTS ( sql語句 )

例: notExists("select id from table where age = 1")→not exists (select id from table where age = 1) 

@Test
public void queryWrapperSix() {
? ?QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? queryWrapper.in("id", 1, 2, 3);
? ? queryWrapper.inSql("id", "select id from user where id < 3");
? ? // 返回值是Object列表
? ? List<Object> users = userMapper.selectObjs(queryWrapper);
? ? users.forEach(System.out::println);
}

or、and

拼接 OR

注意事項:

主動調(diào)用or表示緊接著下一個方法不是用and連接!(不調(diào)用or則默認(rèn)為使用and連接)

例: eq("id",1).or().eq("name","老王")→id = 1 or name = '老王'

OR 嵌套

例: or(i -> i.eq("name", "李白").ne("status", "活著"))→or (name = '李白' and status <> '活著')

AND 嵌套

例: and(i -> i.eq("name", "李白").ne("status", "活著"))→and (name = '李白' and status <> '活著')

@Test
public void queryWrapperSeven() {
? ? // 修改值
? ? User user = new User();
? ? user.setAge(99);
? ? user.setName("BNTang6666");
? ? // 修改條件
? ? UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
? ? userUpdateWrapper
? ? ? ? ? ? .like("name", "BNTang")
? ? ? ? ? ? .or()
? ? ? ? ? ? .between("age", 20, 30);
? ? int result = userMapper.update(user, userUpdateWrapper);
? ? System.out.println(result);
}

嵌套 or、嵌套 and

@Test
public void queryWrapperEight() {
    // 修改值
    User user = new User();
    user.setAge(99);
    user.setName("BNTang6666");
    // 修改條件
    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
    userUpdateWrapper
            .like("name", "A")
            .or(i -> i.eq("name", "BNTang6666").ne("age", 20));
    int result = userMapper.update(user, userUpdateWrapper);
    System.out.println(result);
}

orderBy、orderByDesc、orderByAsc

排序:ORDER BY 字段, ...

例: orderBy(true, true, "id", "name")→order by id ASC,name ASC

排序:ORDER BY 字段, ... DESC

例: orderByDesc("id", "name")→order by id DESC, name DESC

排序:ORDER BY 字段, ... ASC

例: orderByAsc("id", "name")→order by id ASC,name ASC

@Test
public void queryWrapperNine() {
? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? queryWrapper.orderByDesc("id");
? ? List<User> users = userMapper.selectList(queryWrapper);
? ? users.forEach(System.out::println);
}

last

無視優(yōu)化規(guī)則直接拼接到 sql 的最后

注意事項:

只能調(diào)用一次, 多次調(diào)用以最后一次為準(zhǔn)有 sql 注入的風(fēng)險, 請謹(jǐn)慎使用

例: last("limit 1") 

@Test
public void queryWrapperTen() {
? ? QueryWrapper<User> queryWrapper = new QueryWrapper<>();
? ? queryWrapper.last("limit 1");
? ? List<User> users = userMapper.selectList(queryWrapper);
? ? users.forEach(System.out::println);
}

指定要查詢的列

@Test
public void queryWrapperEleven() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.select("id", "name", "age");
    
    List<User> users = userMapper.selectList(queryWrapper);
    users.forEach(System.out::println);
}

set、setSql

SQL SET 字段

例: set("name", "老李頭")

例: set("name", "")→數(shù)據(jù)庫字段值變?yōu)榭兆址?/p>

例: set("name", null)→據(jù)庫字段值變?yōu)閚ull

設(shè)置 SET 部分 SQL

例: setSql("name = '老李頭'")

@Test
public void queryWrapperTwelve() {
    // 修改值
    User user = new User();
    user.setAge(10);
    // 修改條件
    UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
    userUpdateWrapper
            .like("name", "A")
            // 除了可以查詢還可以使用set設(shè)置修改的字段
            .set("name", "BNTang")
            // 可以有子查詢
            .setSql(" email = '303158131@qq.com'");
    int result = userMapper.update(user, userUpdateWrapper);
    System.out.println(result);
}

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

相關(guān)文章

  • Java中JSON字符串反序列化(動態(tài)泛型)

    Java中JSON字符串反序列化(動態(tài)泛型)

    文章討論了在定時任務(wù)中使用反射調(diào)用目標(biāo)對象時處理動態(tài)參數(shù)的問題,通過將方法參數(shù)存儲為JSON字符串并進行反序列化,可以實現(xiàn)動態(tài)調(diào)用,然而,這種方式容易導(dǎo)致內(nèi)存溢出(OOM),這篇文章主要介紹了JSON字符串反序列化?動態(tài)泛型,需要的朋友可以參考下
    2024-12-12
  • Java GZIP壓縮與解壓縮代碼實例

    Java GZIP壓縮與解壓縮代碼實例

    這篇文章主要介紹了Java GZIP壓縮與解壓縮代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Java協(xié)議字節(jié)操作工具類詳情

    Java協(xié)議字節(jié)操作工具類詳情

    這篇文章主要介紹了Java協(xié)議字節(jié)操作工具類詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程

    Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程

    GSON是谷歌開源的一款Java對象與JSON對象互相轉(zhuǎn)換的類庫,Java的JSON轉(zhuǎn)換類庫GSON的基礎(chǔ)使用教程,需要的朋友可以參考下
    2016-06-06
  • Mybatis返回值(resultType&resultMap)的具體使用

    Mybatis返回值(resultType&resultMap)的具體使用

    返回值屬性有兩種設(shè)置,一種是resultType,一種是resultMap,本文主要介紹了Mybatis返回值(resultType&resultMap)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Sentinel結(jié)合Nacos實現(xiàn)數(shù)據(jù)持久化過程詳解

    Sentinel結(jié)合Nacos實現(xiàn)數(shù)據(jù)持久化過程詳解

    這篇文章主要介紹了Sentinel結(jié)合Nacos實現(xiàn)數(shù)據(jù)持久化過程,要持久化的原因是因為每次啟動Sentinel都會使之前配置的規(guī)則就清空了,這樣每次都要再去設(shè)定規(guī)則顯得非常的麻煩,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • 帶你輕松了解Modbus協(xié)議

    帶你輕松了解Modbus協(xié)議

    這篇文章主要給大家介紹了關(guān)于Modbus協(xié)議的相關(guān)資料,此協(xié)議定義了一個控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信的,需要的朋友可以參考下
    2021-11-11
  • java實現(xiàn)鏈表反轉(zhuǎn)

    java實現(xiàn)鏈表反轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)鏈表反轉(zhuǎn),分別通過迭代法、遞歸法實現(xiàn)java鏈表反轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot全局異常處理之解決404/500錯誤

    SpringBoot全局異常處理之解決404/500錯誤

    在搭建項目框架的時候用的是springboot,想統(tǒng)一處理異常,但是發(fā)現(xiàn)404的錯誤總是捕捉不到,總是返回的是springBoot自帶的錯誤結(jié)果信息,這篇文章主要給大家介紹了關(guān)于SpringBoot全局異常處理之解決404/500錯誤的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 聊聊Spring MVC JSON數(shù)據(jù)交互的問題

    聊聊Spring MVC JSON數(shù)據(jù)交互的問題

    我們在開發(fā)中后端經(jīng)常需要接受來自于前端傳遞的Json字符串?dāng)?shù)據(jù),怎么把Json字符串轉(zhuǎn)換為Java對象呢?下面小編給大家?guī)砹薙pring MVC JSON數(shù)據(jù)交互的問題,感興趣的朋友一起看看吧
    2021-10-10

最新評論

江口县| 青铜峡市| 凉城县| 墨玉县| 潍坊市| 陵水| 沙河市| 梅州市| 吉林市| 景洪市| 旌德县| 内乡县| 南丰县| 河津市| 大化| 长寿区| 景洪市| 丽江市| 黔南| 峡江县| 台山市| 万州区| 海南省| 玉山县| 马山县| 同江市| 东光县| 柯坪县| 桐柏县| 余江县| 阜阳市| 舞阳县| 福清市| 绥德县| 余江县| 丹凤县| 灌南县| 大关县| 许昌县| 共和县| 宁陵县|