表结构:
user:id
name
age
需求:查询名字中带有o的和年龄在10,20岁之间的人
重新写一个模糊查询的类 FuzzySearch用来封装查询条件
FuzzySearch.java
package cn.limbo.pojo;
/**
* Created by limbo on 2016/10/26.
*/
public class FuzzySearch {
private String name;
private int maxAge;
private int minAge;
public FuzzySearch() {
}
public FuzzySearch(String name, int maxAge, int minAge) {
this.name = name;
this.maxAge = maxAge;
this.minAge = minAge;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMaxAge() {
return maxAge;
}
public void setMaxAge(int maxAge) {
this.maxAge = maxAge;
}
public int getMinAge() {
return minAge;
}
public void setMinAge(int minAge) {
this.minAge = minAge;
}
}
在userMapper.xml中配置
<select id="fuzzyUser" parameterType="FuzzySearch" resultType="User">
SELECT * FROM users WHERE
<if test="name != '%null%' ">
name LIKE #{name} AND
</if>
age BETWEEN #{minAge} AND #{maxAge}
</select>
中间的<if>标签表示的是检查传进来的name是否为空
调用:
@Test
public void testFuzzy(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
String statment = "cn.limbo.pojo.userMapper.fuzzyUser";
String name = null;
String nameString = "%"+name+"%";
List<User> users = sqlSession.selectList(statment,new FuzzySearch(nameString,20,10));
System.out.println(users);
sqlSession.close();
}