来源:为了解决前端某些数据出入为空或者不传入的情况
1.原始解决方式,通过if判断,例如:
@Test
public void testCondition(){
String name = "王";
String email = "";
condition(name,email);
}
public void condition(String name, String email){
QueryWrapper<User> queryWrapper = new QueryWrapper();
if (!StringUtils.isEmpty(name)){
queryWrapper.like("name",name);
}
if (!StringUtils.isEmpty(email)){
queryWrapper.like("email",email);
}
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
查询结果:
DEBUG==> Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE ?)
DEBUG==> Parameters: %王%(String)
TRACE<== Columns: id, name, age, email, manager_id, create_time
TRACE<== Row: 1088248166370832385, 王天风, 25, wtf@baomidou.com, 1087982257332887553, 2019-02-05 11:12:22.0
DEBUG<== Total: 1
User(id=1088248166370832385, name=王天风, age=25, email=wtf@baomidou.com, managerId=1087982257332887553, createTime=2019-02-05T11:12:22)
2.使用condition解决
Java代码:
@Test
public void testCondition(){
String name = "王";
String email = "";
condition(name,email);
}
public void condition(String name, String email){
QueryWrapper<User> queryWrapper = new QueryWrapper();
queryWrapper.like(!StringUtils.isEmpty(name),"name",name)
.like(!StringUtils.isEmpty(email),"email",email);
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
输出结果:
DEBUG==> Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE ?)
DEBUG==> Parameters: %王%(String)
TRACE<== Columns: id, name, age, email, manager_id, create_time
TRACE<== Row: 1088248166370832385, 王天风, 25, wtf@baomidou.com, 1087982257332887553, 2019-02-05 11:12:22.0
DEBUG<== Total: 1
User(id=1088248166370832385, name=王天风, age=25, email=wtf@baomidou.com, managerId=1087982257332887553, createTime=2019-02-05T11:12:22)