条件构造器wrapper,主要用于构造sql语句的where条件,他更擅长这个,但也可以用于构造其他类型的条件,比如order by、group by等。 对于sql语句中复杂的条件部分,可以用wrapper构造。
条件构造器的使用经验:
基于QueryWrapper的查询
练习1.
void testQueryWrapper(){
QueryWrapper<User> wrapper = new QueryWrapper<User>()
.select("id", "username", "info", "balance")
.like("username", 'o')
.ge("balance", 1000);
List<User> users = userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}
}
通过日志查看构造出的sql语句:
练习2.
@Test
void testUpdateQueryWrapper(){
User user = new User();
user.setBalance(2000);
QueryWrapper<User> userQueryWrapper = new QueryWrapper<User>()
.eq("username","jack");
userMapper.update(user,userQueryWrapper);
}
通过日志查看构造出的sql语句:
基于UpdateWrapper的更新
这里不是给字段直接设置值,而是完成一个字段自减的效果。
所以不需要再传入存储数据的实体
基于LambdaQueryWrapper的查询
这里不需要再手动写字段名了,直接传入字段的get方法,mybatisplus会基于反射从方法中获取字段名。
@Test
void testLambdaQueryWrapper(){
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
.select(User::getId,User::getUsername,User::getInfo,User::getBalance)
.like(User::getId, 'o')
.ge(User::getBalance, 1000);
List<User> users = userMapper.selectList(wrapper);
for (User user : users) {
System.out.println(user);
}
}