這篇文章給大家分享的是有關mybatis中like模糊查詢特殊字符報錯怎么實現轉義處理的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
<if test="projectName!=null and projectName!=''"> <bind name="projectName_" value="'%'+projectName+'%'"/> AND info.name like #{projectName_} </if>
<if test="projectName!=null and projectName!=''"> AND info.name like concat('%',#{projectName_},'%') </if>
使用MyBatis中的模糊查詢時,當查詢關鍵字中包括有_、\、%時,查詢關鍵字失效。
當like中包含_時,查詢仍為全部,即 like '%_%'查詢出來的結果與like '%%'一致,并不能查詢出實際字段中包含有_特殊字符的結果條目
like中包括%時,與1中相同
like中包含\時,帶入查詢時,%%無法查詢到包含字段中有\的條目
工具類:特殊字符轉義
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 ; } }
以上方法在關鍵字中包含有\可能會失效,失效的原因是由于查詢的關鍵字的數據庫字段排序規則為utf8_unicode_ci,要想不失效,查詢的關鍵字的排序規則必須為utf8_general_ci,或者統一全部數據庫字符集與排序規則分別為:utf8mb4與utf8mb4_general_ci
感謝各位的閱讀!關于“mybatis中like模糊查詢特殊字符報錯怎么實現轉義處理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。