mybatis?like模糊查詢特殊字符報錯轉義處理方式
like模糊查詢特殊字符報錯轉義處理
方案1
?? ?<if test="projectName!=null and projectName!=''">
? ? ? ? ? ? <bind name="projectName_" value="'%'+projectName+'%'"/>
? ? ? ? ? ? AND info.name like #{projectName_}
? ? ? ? </if>方案2
?? ?<if test="projectName!=null and projectName!=''">
? ? ? ? ? ? AND info.name like concat('%',#{projectName_},'%')
? ? ? ? </if>like模糊查詢中包含有特殊字符(_、\、%)
使用MyBatis中的模糊查詢時,當查詢關鍵字中包括有_、\、%時,查詢關鍵字失效。
- 當like中包含_時,查詢仍為全部,即 like '%_%'查詢出來的結果與like '%%'一致,并不能查詢出實際字段中包含有_特殊字符的結果條目
- like中包括%時,與1中相同
- like中包含\時,帶入查詢時,%%無法查詢到包含字段中有\(zhòng)的條目
處理
工具類:特殊字符轉義
import org.apache.commons.lang3.StringUtils;?
public class EscapeUtil {
? ? //mysql的模糊查詢時特殊字符轉義
? ? public static String escapeChar(String before){
? ? ? ? if(StringUtils.isNotBlank(before)){
? ? ? ? ? ? before = before.replaceAll("\\\\", "\\\\\\\\");
? ? ? ? ? ? before = before.replaceAll("_", "\\\\_");
? ? ? ? ? ? before = before.replaceAll("%", "\\\\%");
? ? ? ? }
? ? ? ? return before ;
? ? }
}注意
以上方法在關鍵字中包含有\(zhòng)可能會失效,失效的原因是由于查詢的關鍵字的數(shù)據庫字段排序規(guī)則為utf8_unicode_ci,要想不失效,查詢的關鍵字的排序規(guī)則必須為utf8_general_ci,或者統(tǒng)一全部數(shù)據庫字符集與排序規(guī)則分別為:utf8mb4與utf8mb4_general_ci
這些僅為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IntelliJ IDEA修改新建文件自動生成注釋的user名
今天小編就為大家分享一篇關于IntelliJ IDEA修改新建文件自動生成注釋的user名,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
在Spring Boot中實現(xiàn)HTTP緩存的方法
緩存是HTTP協(xié)議的一個強大功能,但由于某些原因,它主要用于靜態(tài)資源,如圖像,CSS樣式表或JavaScript文件。本文重點給大家介紹在Spring Boot中實現(xiàn)HTTP緩存的方法,感興趣的朋友跟隨小編一起看看吧2018-10-10
解決Spring Cloud Gateway獲取body內容,不影響GET請求的操作
這篇文章主要介紹了解決Spring Cloud Gateway獲取body內容,不影響GET請求的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Java通過freemarker生成Word文檔導出的方式詳解
本文詳細介紹了如何使用FreeMarker模板生成Word文檔,包括制作FTL模板、在Java中使用FreeMarker生成文檔以及處理動態(tài)數(shù)據和合并單元格等內容,需要的朋友可以參考下2025-03-03

