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

Mybatis-Plus條件構(gòu)造器的具體使用方法

 更新時(shí)間:2020年08月26日 10:38:49   作者:ME_邱康  
這篇文章主要介紹了Mybatis-Plus條件構(gòu)造器的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在Mybatis-Plus中,Wrapper接口的實(shí)現(xiàn)類關(guān)系如下:


可以看到,AbstractWrapper和AbstractChainWrapper是重點(diǎn)實(shí)現(xiàn),接下來我們重點(diǎn)看下AbstractWrapper以及其子類。

說明:QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父類 用于生成 sql的 where 條件, entity 屬性也用于生成 sql 的 where 條件

注意:entity 生成的 where 條件與使用各個(gè) api 生成的 where 條件 沒有任何關(guān)聯(lián)行為

文檔地址:https://mybatis.plus/guide/wrapper.html

allEq

說明

  • allEq(Map<R, V> params)
  • allEq(Map<R, V> params, boolean null2IsNull)
  • allEq(boolean condition, Map<R, V> params, boolean null2IsNull)

全部eq(或個(gè)別isNull)

個(gè)別參數(shù)說明: params : key 為數(shù)據(jù)庫(kù)字段名, value 為字段值 null2IsNull : 為 true 則在 map 的 value 為

null 時(shí)調(diào)用 isNull 方法,為 false 時(shí)則忽略 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 = ‘老王'

  • allEq(BiPredicate<R, V> filter, Map<R, V> params)
  • allEq(BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)
  • allEq(boolean condition, BiPredicate<R, V> filter, Map<R, V> params, boolean null2IsNull)

個(gè)別參數(shù)說明: filter : 過濾函數(shù),是否允許字段傳入比對(duì)條件中 params 與 null2IsNull : 同上
例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 = ‘老王'

測(cè)試用例

@Test
public void testAllEq() {
	// 設(shè)置條件
	Map<String, Object> params = new HashMap<>();
	params.put("name", "李四");
	params.put("age", "20");
	params.put("password", null);

	QueryWrapper<User> wrapper = new QueryWrapper<>();
	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE password IS NULL AND name = ? AND age = ?
	// wrapper.allEq(params);

	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE name = ? AND age = ?
	// wrapper.allEq(params, false);

	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE age = ?
	// wrapper.allEq((k, v) -> (k.equals("age") || k.equals("id")), params);

	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE name = ? AND age = ?
	wrapper.allEq((k, v) -> (k.equals("age") || k.equals("id") || k.equals("name")), params);

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

基本比較操作

  • eq:等于 =
  • ne:不等于 <>
  • gt:大于 >
  • ge:大于等于 >=
  • lt:小于 <
  • le:小于等于 <=
  • between:BETWEEN 值1 AND 值2
  • notBetween:NOT BETWEEN 值1 AND 值2
  • in:字段 IN (value.get(0), value.get(1), …)
  • notIn:字段 NOT IN (v0, v1, …)

測(cè)試用例

@Test
public void testEq() {
	QueryWrapper<User> wrapper = new QueryWrapper<>();

	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE password = ? AND age >= ? AND name IN (?,?,?)
	wrapper.eq("password", "123456").ge("age", 20).in("name", "李四", "王五", "趙六");

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

模糊查詢like:LIKE ‘%值%'

例: like(“name”, “王”) —> name like ‘%王%'notLike:NOT LIKE ‘%值%'
例: notLike(“name”, “王”) —> name not like ‘%王%'likeLeft:LIKE ‘%值'
例: likeLeft(“name”, “王”) —> name like ‘%王'likeRight:LIKE ‘值%'
例: likeRight(“name”, “王”) —> name like ‘王%'

測(cè)試用例

@Test
public void testLike() {
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE name LIKE ?
	// 參數(shù):%五(String)
	wrapper.likeLeft("name", "五");

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

排序

orderBy
排序:ORDER BY 字段, …
例: orderBy(true, true, “id”, “name”) —> order by id ASC,name ASC

orderByAsc
排序:ORDER BY 字段, … ASC
例: orderByAsc(“id”, “name”) —> order by id ASC,name ASC

orderByDesc
排序:ORDER BY 字段, … DESC
例: orderByDesc(“id”, “name”) —> order by id DESC,name DESC

測(cè)試用例

@Test
public void testOrderByAgeDesc() {
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	// 按照年齡倒序排序
	// SELECT id,user_name,name,age,email AS mail FROM tb_user ORDER BY age DESC
	wrapper.orderByDesc("age");

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

邏輯查詢

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

and
AND 嵌套
例: and(i -> i.eq(“name”, “李白”).ne(“status”, “活著”)) —> and (name = ‘李白' and status<> ‘活著')

測(cè)試用例

@Test
public void testOr() {
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	// SELECT id,user_name,name,age,email AS mail FROM tb_user WHERE name = ? OR age = ?
	wrapper.eq("name", "王五").or().eq("age", 21);

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

select

在Mybatis-Plus查詢中,默認(rèn)查詢所有的字段,如果有需要也可以通過select方法進(jìn)行指定字段。

@Test
public void testSelect() {
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	// SELECT id,name,age FROM tb_user WHERE name = ? OR age = ?
	wrapper.eq("name", "王五").or().eq("age", 21).select("id", "name", "age"); // 指定查詢的字段

	List<User> users = this.userMapper.selectList(wrapper);
	for (User user : users) {
		System.out.println(user);
	}
}

查詢方式 說明
setSqlSelect 設(shè)置 SELECT 查詢字段
where WHERE 語(yǔ)句,拼接 + WHERE 條件
and AND 語(yǔ)句,拼接 + AND 字段=值
andNew AND 語(yǔ)句,拼接 + AND (字段=值)
or OR 語(yǔ)句,拼接 + OR 字段=值
orNew OR 語(yǔ)句,拼接 + OR (字段=值)
eq 等于=
allEq 基于 map 內(nèi)容等于=
ne 不等于<>
gt 大于>
ge 大于等于>=
lt 小于<
le 小于等于<=
like 模糊查詢 LIKE
notLike 模糊查詢 NOT LIKE
in IN 查詢
notIn NOT IN 查詢
isNull NULL 值查詢
isNotNull IS NOT NULL
groupBy 分組 GROUP BY
having HAVING 關(guān)鍵詞
orderBy 排序 ORDER BY
orderAsc ASC 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 條件語(yǔ)句
notExists NOT EXISTS 條件語(yǔ)句
between BETWEEN 條件語(yǔ)句
notBetween NOT BETWEEN 條件語(yǔ)句
addFilter 自由拼接 SQL
last 拼接在最后,例如:last(“LIMIT 1”)

到此這篇關(guān)于Mybatis-Plus條件構(gòu)造器的具體使用方法的文章就介紹到這了,更多相關(guān)Mybatis-Plus條件構(gòu)造器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)企業(yè)微信消息推送功能的詳細(xì)步驟

    Java實(shí)現(xiàn)企業(yè)微信消息推送功能的詳細(xì)步驟

    這篇文章主要介紹了Java實(shí)現(xiàn)企業(yè)微信消息推送功能,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Maven中optional標(biāo)簽用法詳解

    Maven中optional標(biāo)簽用法詳解

    這篇文章主要介紹了Maven中optional標(biāo)簽,文章中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的小伙伴可以借鑒一下
    2023-05-05
  • SpringBoot超詳細(xì)講解集成Flink的部署與打包方法

    SpringBoot超詳細(xì)講解集成Flink的部署與打包方法

    昨天折騰了下SpringBoot與Flink集成,實(shí)際上集成特簡(jiǎn)單,主要是部署打包的問題折騰了不少時(shí)間。想打出的包直接可以java -jar運(yùn)行,同時(shí)也可以flink run運(yùn)行,或者在flink的dashboard上上傳點(diǎn)擊啟動(dòng)。結(jié)果是不行,但是使用不同的插件打包還是可以的
    2022-05-05
  • Java(基于Struts2) 分頁(yè)實(shí)現(xiàn)代碼

    Java(基于Struts2) 分頁(yè)實(shí)現(xiàn)代碼

    這篇文章介紹了Java(基于Struts2) 分頁(yè)實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-10-10
  • 基于Java?GUI?事件處理方式

    基于Java?GUI?事件處理方式

    這篇文章主要介紹了基于Java?GUI?事件處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Boot Test詳解

    Spring Boot Test詳解

    Spring Test與JUnit等其他測(cè)試框架結(jié)合起來,提供了便捷高效的測(cè)試手段,而Spring Boot Test 是在Spring Test之上的再次封裝,增加了切片測(cè)試,增強(qiáng)了mock能力,這篇文章主要介紹了Spring Boot Test介紹,需要的朋友可以參考下
    2024-02-02
  • 解決Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問題

    解決Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問題

    這篇文章主要介紹了Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java concurrency之AtomicReference原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之AtomicReference原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    AtomicReference是作用是對(duì)"對(duì)象"進(jìn)行原子操作。這篇文章主要介紹了Java concurrency之AtomicReference原子類,需要的朋友可以參考下
    2017-06-06
  • Mybatis SQL日志如何轉(zhuǎn)換為可執(zhí)行sql

    Mybatis SQL日志如何轉(zhuǎn)換為可執(zhí)行sql

    這篇文章主要介紹了Mybatis SQL日志如何轉(zhuǎn)換為可執(zhí)行sql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring boot自定義http反饋狀態(tài)碼詳解

    Spring boot自定義http反饋狀態(tài)碼詳解

    這篇文章主要給大家介紹了Spring boot自定義http反饋狀態(tài)碼的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06

最新評(píng)論

泰安市| 合水县| 扶沟县| 保定市| 孟津县| 鱼台县| 海盐县| 孟州市| 辽阳县| 临澧县| 明溪县| 门源| 陇川县| 石景山区| 墨江| 凤城市| 翼城县| 武强县| 遵化市| 巍山| 中西区| 措美县| 错那县| 刚察县| 长丰县| 广宁县| 富宁县| 汶上县| 临沧市| 交口县| 宜良县| 镇坪县| 卓资县| 景洪市| 肥西县| 河间市| 淮安市| 咸丰县| 郑州市| 皮山县| 连江县|