Mybatis中如何编写Like呢?

重生 MyBatis 发布时间:2024-01-27 22:22:03 阅读数:9391 1
下文笔者讲述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());//查到匹配%的记录
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202401/7820.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者