溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis中like模糊查詢特殊字符報錯怎么實現轉義處理

發布時間:2022-01-14 16:44:46 來源:億速云 閱讀:529 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關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中包含\時,帶入查詢時,%%無法查詢到包含字段中有\的條目

處理

工具類:特殊字符轉義

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模糊查詢特殊字符報錯怎么實現轉義處理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女