Mybatis 模糊搜索参数有单引号怎么处理

苍云烟 2018-11-16 02:55:36
mapper中参数 concat('%',#{searchValue},'%') 这样写的。
当searchValue 参数中有 英文单引号 就炸了,请各位大神给个解决方案。在这谢过了
...全文
1390 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆行而上 2018-12-06
  • 打赏
  • 举报
回复
paramName like '%${paramName }%' 直接这样就可以了,前面的数据库字段,后面的入参
源氏程序员 2018-12-06
  • 打赏
  • 举报
回复
如果是oracle可以使用instr(t.acc_name,#{searchValue})>0
江北雪 2018-11-21
  • 打赏
  • 举报
回复
你也可以在外面拼接%% 传入在参数为 searchValue = “%a'b%” select * from tablename where colname like #{searchValue,jdbcType=VARCHAR}
江北雪 2018-11-21
  • 打赏
  • 举报
回复
在传入参数前做转义, ' 替换为 ‘’
nayi_224 2018-11-20
  • 打赏
  • 举报
回复
怎么个炸法?我这没报错啊,虽然是ibatis的。
		Map<String, String> map = new HashMap();
		map.put("aaa", "aa'aa'aa");
		System.out.println(client.queryForList("blog.test", map).size());
<sqlMap namespace="blog">

	<select id="test" resultClass="java.util.LinkedHashMap">
select 111 from dual
where #aaa# is not null
	</select>
2018-11-20 20:03:40,469 [java.sql.Connection]-[DEBUG] {conn-100000} Connection
2018-11-20 20:03:40,472 [java.sql.Connection]-[DEBUG] {conn-100000} Preparing Statement:  select 111 from dual where ? is not null  
2018-11-20 20:03:40,621 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Executing Statement:  select 111 from dual where ? is not null  
2018-11-20 20:03:40,621 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Parameters: [aa'aa'aa]
2018-11-20 20:03:40,621 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Types: [java.lang.String]
1
天涯若风 2018-11-20
  • 打赏
  • 举报
回复
你这是考虑到防sql注入嘛
张沐晗 2018-11-20
  • 打赏
  • 举报
回复
后台程序将传入的参数处理一下,这是最有效的方法吧
Nihility/ 2018-11-19
  • 打赏
  • 举报
回复
#{searchValue} 改为 ${searchValue}
咸哼酒家 2018-11-16
  • 打赏
  • 举报
回复 1
#{searchValue} #的意义在于预编译类型转化
既然参数以及有了引号,改为这个就可以了,

concat('%',${searchValue},'%')
苍云烟 2018-11-16
  • 打赏
  • 举报
回复
就是有没有一次性转译所有的请求参数
G.Jagger 2018-11-16
  • 打赏
  • 举报
回复
把单引号转义一下呗,后台用replace方法把单引号替换掉

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧