mybatis?like模糊查詢特殊字符報錯轉(zhuǎn)義處理方式
like模糊查詢特殊字符報錯轉(zhuǎn)義處理
方案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中的模糊查詢時,當查詢關(guān)鍵字中包括有_、\、%時,查詢關(guān)鍵字失效。
- 當like中包含_時,查詢?nèi)詾槿浚?like '%_%'查詢出來的結(jié)果與like '%%'一致,并不能查詢出實際字段中包含有_特殊字符的結(jié)果條目
- like中包括%時,與1中相同
- like中包含\時,帶入查詢時,%%無法查詢到包含字段中有\(zhòng)的條目
處理
工具類:特殊字符轉(zhuǎn)義
import org.apache.commons.lang3.StringUtils;? public class EscapeUtil { ? ? //mysql的模糊查詢時特殊字符轉(zhuǎn)義 ? ? public static String escapeChar(String before){ ? ? ? ? if(StringUtils.isNotBlank(before)){ ? ? ? ? ? ? before = before.replaceAll("\\\\", "\\\\\\\\"); ? ? ? ? ? ? before = before.replaceAll("_", "\\\\_"); ? ? ? ? ? ? before = before.replaceAll("%", "\\\\%"); ? ? ? ? } ? ? ? ? return before ; ? ? } }
注意
以上方法在關(guān)鍵字中包含有\(zhòng)可能會失效,失效的原因是由于查詢的關(guān)鍵字的數(shù)據(jù)庫字段排序規(guī)則為utf8_unicode_ci,要想不失效,查詢的關(guān)鍵字的排序規(guī)則必須為utf8_general_ci,或者統(tǒng)一全部數(shù)據(jù)庫字符集與排序規(guī)則分別為:utf8mb4與utf8mb4_general_ci
這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA修改新建文件自動生成注釋的user名
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改新建文件自動生成注釋的user名,小編覺得內(nèi)容挺不錯的,現(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內(nèi)容,不影響GET請求的操作
這篇文章主要介紹了解決Spring Cloud Gateway獲取body內(nèi)容,不影響GET請求的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Java通過freemarker生成Word文檔導出的方式詳解
本文詳細介紹了如何使用FreeMarker模板生成Word文檔,包括制作FTL模板、在Java中使用FreeMarker生成文檔以及處理動態(tài)數(shù)據(jù)和合并單元格等內(nèi)容,需要的朋友可以參考下2025-03-03如何通過Maven倉庫安裝Spire系列的Java產(chǎn)品
這篇文章主要介紹了如何通過Maven倉庫安裝Spire系列的Java產(chǎn)品,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07