本文共 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等技术统一处理。
转载地址:http://qemwz.baihongyu.com/