91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

象州县| 辽中县| 灵丘县| 会同县| 沙河市| 吴桥县| 全州县| 乌兰浩特市| 中超| 观塘区| 平顶山市| 平顺县| 阜阳市| 石嘴山市| 延寿县| 都匀市| 扶余县| 元阳县| 南宫市| 南昌县| 神农架林区| 临夏市| 新疆| 庆安县| 大悟县| 杭州市| 日照市| 陆良县| 衡阳市| 寻乌县| 高阳县| 仁布县| 揭西县| 肃宁县| 峨眉山市| 昌宁县| 涟水县| 民乐县| 武宣县| 威宁| 浦城县|