mybatis中的like模糊查询

需要用到模糊查询,网上找了好几篇博文,写的都不错,我总结了一下
第一种方式

 <select id="findUserByLikeName1" parameterType="java.lang.String" resultMap="user">
      select * from t_user where name like '%${name}%'
  </select>

这种会有sql注入的问题,之前Java面试也经常问到 Mybatis中 $ 和 # 使用的区别。这种写法也不能加jdbcType=VARCHAR,否则也会报错。

第二种方式:
xml文件:

 <select id="findUserByLikeName2" parameterType="java.lang.String" resultMap="user">
      select * from t_user where name like #{
    
    name,jdbcType=VARCHAR}
  </select>

java代码:

public void findUserByLikeName2(){
    
    
    String name = "Cloud";
    List<User> test = userMapper.findUserByLikeName2("%" +name+"%");
    System.out.println(test.size());
}

第三种方式:
xml文件:

 <select id="findUserByLikeName3" parameterType="java.lang.String" resultMap="user">
      select * from t_user where name like concat('%',#{
    
    name,jdbcType=VARCHAR},'%')
  </select>

java代码:

public void findUserByLikeName3(){
    
    
    String name = "Cloud";
    List<User> test = userMapper.findUserByLikeName3(name);
    System.out.println(test.size());
}

总的来说,就是处理模糊查询中的%的问题,第二种第三种用的应该比较多

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/112847521