mybatis中like的注意
发布日期:2021-05-08 13:40:07 浏览次数:7 分类:原创文章

本文共 695 字,大约阅读时间需要 2 分钟。

<!--concat Mysql和 Oracle区别 ,不存在sql注入--> <select id="findUserByLikeName" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like concat('%',#{name,jdbcType=VARCHAR},'%') </select>这样写查询不到特殊字符(如单独的%、/)或者带有特定特殊字符的字符串比如,我们要搜索一个字符串"小汉_",如果直接like "小汉_",那么"_"的作用就是通配符,而不是字符,结果,我们会查到比如"小汉a","小汉b","小汉c",而不是我们需要的   "小汉_".      用LIKE '小汉/_' ESCAPE '/'      '/'表示特殊用法标志。    就会搜索‘小汉_’了。使用ESCAPE解决这个问题<select id="findUserByLikeNamei" parameterType="java.lang.String" resultMap="user">select * from t_user where name like concat('%',#{name,jdbcType=VARCHAR},'%')  ESCAPE '/'</select>

List test1 = userMapper.findUserByLikeName4("/" +name);
对查询的关键字进行的这种处理在代码中可以使用拦截器或者AOP等技术统一处理。

上一篇:Thread线程
下一篇:Long对象缓存池

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月22日 10时36分40秒