findByName(String name)测试的时候,传入的参数要拼接为userDao.findByName("%name%")第二中是占位符, value,{value} ,value,符号,属性必须是value,取参数的值@Selec..._@select 模糊查询">
当前位置:   article > 正文

MyBatis-@select注解实现模糊查询的两种方式_@select 模糊查询

@select 模糊查询

第一种

@Select("select * from xxx where  name like #{name} ")

List<xxx> findByName(String name)
  • 1
  • 2
  • 3

测试的时候,传入的参数要拼接为

userDao.findByName("%"+name+"%")
  • 1

第二种

--------修改--------

第二中是占位符, v a l u e , {value} , value,符号,属性必须是value,取参数的值

@Select("select * from xxx where  name like CONCAT('%', #{name}, '%')")

List<xxx> findByName(String name)
  • 1
  • 2
  • 3

测试的时候,直接传入参数

userDao.findByName(name)
  • 1

使用第一种方式亲测有效,第二种没试,应该可以

第三种

使用selectProvider

@SelectProvider(type = SelectHelper.class, method = "findByNameMethod")
public List<XXX> findByName(XXX user);
  • 1
  • 2

对应的查询辅助类:


public class SelectHelper{

	public static String findByNameMethod(XXX user) {
		return new SQL() {{
			SELECT("*");
			FROM("test");
			if(StringUtils.hasText(user.getName())) {
				WHERE("name like CONCAT('%', #{name}, '%')");
			}
			ORDER_BY("create_time desc");
		}}.toString();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读