【Java字符操作】避免模糊查询%等占位符时无效

编程语言:java

框架:SSM

模糊查询实现方式:

<if test="goodsCode != null">
       and (goods_code like CONCAT(CONCAT('%', #{goodsCode}), '%')
</if>

用concat拼接mybatis传下来的值拼接到sql中

效果:

        在搜索框输入%字符时,即使数据中有带%的数据,也查询不出来。

解决:

        在传查询值的时候,需要进行转义,用下面的操作方法:

/**
* 百分号,反斜杠,下划线转义-王啸-2018年1月5日13:03:59
* @param keyword
* @return
*/
private static String transfer(String keyword) {
    if(keyword.contains("%") || keyword.contains("_")){ 
    keyword = keyword.replaceAll("\\\\", "\\\\\\\\") 
	      .replaceAll("\\%", "\\\\%") 
	      .replaceAll("\\_", "\\\\_");
    }
    return keyword;
}
这个方法可以直接转义下划线,反斜杠和百分号,十分方便,并且用sql或者mybatis查询可以正常查询出来。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值