MyBatis-plus中的模糊查詢解讀
MyBatis-plus模糊查詢
在使用MyBatis-plus的時(shí)候,一些基礎(chǔ)的增刪改查可以不用再自己寫sql了:
public interface UserDao extends BaseMapper<FykUser>{
}就這樣,就可以實(shí)現(xiàn)user表的增刪改查了。
模糊查詢
使用userDao.selectList(queryWrapper)方法,就可以查詢出一個(gè)用戶列表。
如果需要模糊查詢,代碼如下:
//條件封裝 QueryWrapper<FykUser> queryWrapper = new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(user.getName()), "NAME", user.getName()); queryWrapper.like(user.getEnable() != null, "ENABLE", user.getEnable()); List<FykUser> userList = userDao.selectList(queryWrapper);
也就是說,調(diào)用queryWrapper的like方法就可以。
這里,like方法有三個(gè)參數(shù):
- 第一個(gè)參數(shù):該參數(shù)是一個(gè)布爾類型,只有該參數(shù)是true時(shí),才將like條件拼接到sql中;本例中,如果name字段不為空,則拼接name字段的like查詢條件;
- 第二個(gè)參數(shù):該參數(shù)是數(shù)據(jù)庫中的字段名;
- 第三個(gè)參數(shù):該參數(shù)值字段值;
需要說明的是,這里的like查詢是使用的默認(rèn)方式,也就是說在查詢條件的左右兩邊都有%:NAME = ‘%王%’;
如果只需要在左邊或者右邊拼接%,可以使用likeLeft或者likeRight方法。
其他
在QueryWrapper類中,可以看到,還有很多條件查詢的方法,諸如ge、le、lt、between等之類的方法,他們的傳參方式都和上面介紹的差不多。
MyBatis-plus指定字段模糊查詢
- mybatis-plus版本:3.3.0
- oracle版本:11g
很常見的一個(gè)需求場(chǎng)景:某張表在前端顯示時(shí),查詢條件中,往往name字段需要模糊查詢,否則默認(rèn)mybatis-plus是用的全字符匹配查詢。
如何最小限度地改造代碼,實(shí)現(xiàn)某個(gè)字段模糊查詢,其實(shí)mybatis-plus官方文檔給出了答案:

通過@TableField注解地condition屬性,可以配置某個(gè)字段,始終使用模糊匹配,打開condition類,去看看有哪些可選項(xiàng):

一共有5個(gè)可選項(xiàng),默認(rèn)是采用第一個(gè):EQUAL。
接下來改造自己的代碼:

然而在數(shù)據(jù)庫為oracle的情況下會(huì)報(bào)錯(cuò),打印出來的SQL如下:
SELECT COUNT(1)
?FROM TEST_TABLE
?WHERE TITLE LIKE CONCAT('%', '激光', '%');由于oracle的CONCAT函數(shù)不支持拼接2個(gè)以上的參數(shù),因此產(chǎn)生了錯(cuò)誤。因此自己定義一個(gè)注解類,@TableField注解不變,
只需要注意引入的SqlCondition類是你自己新定義的類,或者為了避免混淆,干脆你換個(gè)名字不叫SqlCondition,如下:

問題解決。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Mybatis實(shí)現(xiàn)動(dòng)態(tài)SQL編寫的示例詳解
- Mybatis多表查詢與動(dòng)態(tài)SQL特性詳解
- MyBatis中的SQL映射文件配置結(jié)果映射的操作指南
- 關(guān)于MyBatis結(jié)果映射的實(shí)例總結(jié)
- 關(guān)于MyBatis模糊查詢的幾種實(shí)現(xiàn)方式
- MyBatis解決模糊查詢包含特殊字符問題
- mybatis/mybatis-plus模糊查詢語句特殊字符轉(zhuǎn)義攔截器的實(shí)現(xiàn)
- MyBatis動(dòng)態(tài)SQL、模糊查詢與結(jié)果映射操作過程
相關(guān)文章
SpringBoot統(tǒng)計(jì)接口請(qǐng)求耗時(shí)的方法詳解
接口請(qǐng)求時(shí)間的快慢就代表著獲取到對(duì)應(yīng)的數(shù)據(jù)的快慢,也代表著用戶請(qǐng)求頁面數(shù)據(jù)的快慢,常常可以借助接口請(qǐng)求快慢進(jìn)行相應(yīng)的優(yōu)化,本文給大家介紹了SpringBoot統(tǒng)計(jì)接口請(qǐng)求耗時(shí)的方法,需要的朋友可以參考下2024-12-12
SpringBoot?LocalDateTime格式轉(zhuǎn)換方案詳解(前端入?yún)?
這篇文章主要介紹了SpringBoot?LocalDateTime格式轉(zhuǎn)換(前端入?yún)?,本文用示例介紹SpringBoot全局格式配置,將前端傳過來的時(shí)間自動(dòng)轉(zhuǎn)化為LocalDateTime,需要的朋友可以參考下2023-04-04
springboot實(shí)現(xiàn)將自定義日志格式存儲(chǔ)到mongodb中
這篇文章主要介紹了springboot實(shí)現(xiàn)將自定義日志格式存儲(chǔ)到mongodb中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
詳解在IDEA中使用MyBatis Generator逆向工程生成代碼
這篇文章主要介紹了詳解在IDEA中使用MyBatis Generator逆向工程生成代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Java使用openOffice對(duì)于word的轉(zhuǎn)換及遇到的問題解決
開發(fā)過程中經(jīng)常會(huì)使用java將office系列文檔轉(zhuǎn)換為PDF, 一般都使用微軟提供的openoffice+jodconverter 實(shí)現(xiàn)轉(zhuǎn)換文檔,下面這篇文章主要給大家介紹了關(guān)于Java通過openOffice對(duì)于word的轉(zhuǎn)換及遇到問題的解決方法,需要的朋友可以參考下2018-09-09

