Mybatis中如何编写Like呢?
下文笔者讲述mybatis中编写like的方法分享,如下所示
方式一 在Mybatis中的第一种写法 <!--有sql注入问题--> <select id="findUserByLikeName1" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like '%${name}%' </select> 方式二 在Mybatis中的第二种写法 <!--直接在代码中拼接%, 不存在sql注入--> <select id="findUserByLikeName2" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like #{name,jdbcType=VARCHAR} </select> 方式三 在Mybatis中的第三种写法: <!--concat Mysql和 Oracle区别 ,不存在sql注入--> <select id="findUserByLikeName3" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like concat('%',#{name,jdbcType=VARCHAR},'%') </select>
注意事项: 当使用方式三的时候,如果查询的关键字就是% ②使用ESCAPE <select id="findUserByLikeName4" parameterType="java.lang.String" resultMap="user"> select * from t_user where name like concat('%',#{name,jdbcType=VARCHAR},'%') ESCAPE '/' </select> 测试 @Test public void findUserByLikeName4(){ // replaceAll("%", "/%").replaceAll("_", "/_") String name = "%"; list<User> test = userMapper.findUserByLikeName4(name); System.out.println(test.size());// 查到全部 List<User> test1 = userMapper.findUserByLikeName4("/" +name); System.out.println(test1.size());//查到匹配%的记录 }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。