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

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

一共有5個可選項,默認是采用第一個:EQUAL。
接下來改造自己的代碼:

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

問題解決。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot?LocalDateTime格式轉(zhuǎn)換方案詳解(前端入?yún)?
springboot實現(xiàn)將自定義日志格式存儲到mongodb中
詳解在IDEA中使用MyBatis Generator逆向工程生成代碼
Java使用openOffice對于word的轉(zhuǎn)換及遇到的問題解決

