中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MyBatis如何解決模糊查詢包含特殊字符問題

發布時間:2023-02-09 09:17:47 來源:億速云 閱讀:167 作者:iii 欄目:開發技術

這篇“MyBatis如何解決模糊查詢包含特殊字符問題”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MyBatis如何解決模糊查詢包含特殊字符問題”文章吧。

MyBatis解決模糊查詢包含特殊字符

第一塊:MyBatis 實現模糊查詢方式

1.1  sql中字符串拼接

SELECT * FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%', #{參數}), '%');

1 2. 使用 ${...} 代替 #{...}

SELECT * FROM 表名 WHERE 字段名 LIKE '%${參數}%';

注意:($不能防止sql注入, #{}---> 可以防止sql注入的問題)

1.3 程序中拼接

Java 代碼

String searchText = new StringBuilder("%").append(text).append("%").toString(); 
parameterMap.put("text", searchText);

Mapper 映射文件

SELECT * FROM 表名 WHERE 字段名 LIKE #{參數};

第二塊:MyBatis 實現特殊字符處理之<![CDATA[ ]]>

2.1 <![CDATA[ ]]> 簡介

它的全稱為character data,以"<![CDATA[ "開始,以" ]]>" 結束,在兩者之間嵌入不想被解析程序解析的原始數據,解析器不對CDATA區中的內容進行解析,而是將這些數據原封不動地交給下游程序處理。

2.2 MyBatis 自動轉義特殊字符表

特殊字符替代符號
&&amp;
<&lt;
>&gt;
"&quot;
'&apos;

2.3 <![CDATA[ ]]> 特殊字符

xml 中表示:   <= 小于等于、    >= 大于等于 需加  這樣的標記:     <![CDATA[   ]]>      xml中有&的符號,需要

  • <![CDATA[&]]>這樣表示&

  • <= 小于等于 :<![CDATA[ <= ]]>

  • >= 大于等于:<![CDATA[  >=  ]]>

第三塊:模糊查詢包含特殊字符

解決辦法:使用 ${...} + <![CDATA[ ]]>

模板:

  <select id="searchAll" parameterType="map" resultType="map">
    SELECT 
        *
    FROM  表名 P
      WHERE 1=1 
    <if test="參數 != null and 參數 != ''">
        <![CDATA[ AND P.字段名 LIKE '%${參數}%']]>
    </if>

MyBatis模糊查詢時對特殊字符"%"和"_"的處理

問題

輸入"%“或”_",查詢結果為全部數據,且無法查詢到帶有"%"或者下劃線 的數據。

解決

對特殊字符轉義

例如查詢字段為 name

若name中含有"%“或 “_” 轉為”/%" “/ _”

public void setName(String name) {
        this.name = StringUtils.isBlank(name) ? null : EscapeUtil.escapeChar(name);
    }
package com.xpf.util;

import org.apache.commons.lang3.StringUtils;

/**
 * @Title:EscapeUtil
 * @Package:com.xpf.util
 * @Author: xiapf
 * @Date:2019/9/20
 * @Descrption:
 */
public class EscapeUtil {
    /**
     * mysql的模糊查詢時特殊字符轉義
     */
    public static String escapeChar(String before){
        if(StringUtils.isNotBlank(before)){
            before = before.replaceAll("_", "/_");
            before = before.replaceAll("%", "/%");
        }
        return before.trim() ;
    }
}

mapper中模糊查詢語句

name like CONCAT('%',#{name},'%') ESCAPE '/'

以上就是關于“MyBatis如何解決模糊查詢包含特殊字符問題”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

定南县| 临漳县| 温泉县| 兰溪市| 沈阳市| 金昌市| 鄂温| 赣州市| 庆阳市| 庆云县| 苏尼特右旗| 西峡县| 保德县| 怀化市| 独山县| 射阳县| 双峰县| 镇坪县| 凉山| 军事| 农安县| 海门市| 凤台县| 信丰县| 佳木斯市| 青岛市| 南乐县| 沂南县| 崇阳县| 当涂县| 昌吉市| 汨罗市| 隆尧县| 嘉祥县| 徐汇区| 贵州省| 庄河市| 浦北县| 锡林浩特市| 盈江县| 图片|