Mybatis如何解決sql中like通配符模糊匹配問題

sql中like通配符模糊匹配問題

針對oracle數據庫:

將查詢條件通過功能類處理

/**
     * Description: 處理轉義字符%和_,針對ORACLE數據庫
     * 
     * @param str
     * @return
     */
    public static String escapeStr(String str) {
        String temp = "";
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '%' || str.charAt(i) == '_') {
                temp += "\\" + str.charAt(i);
            } else {
                temp += str.charAt(i);
            }
        }
        return temp;
    }

後臺Contronller獲得查詢條件

並調用工具類處理

String areaname = request.getParameter("Areaname");
    if (areaname != null) {
        if ("".equals(areaname)) {
            areaname = null;
        } else {
            areaname = StringUtils.escapeStr(areaname);
            }
        }

mapper.xml中對應的使用方法

<if test="param.areaname!=null"> and areaname like '%'||#{param.areaname}||'%' escape '\'</if>

使用like實現模糊匹配

方式一

select * from t_user where name like ' %${value}% '

方式二

select * from t_user where name like '%'||${value}||'%'

方式三

select * from t_user where name like #{do_it_in_java}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: