条件构造器wrapper,主要用于构造sql语句的where条件,他更擅长这个,但也可以用于构造其他类型的条件,比如order by、group by等。
条件构造器的使用经验:
基于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.
@Testvoid 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会基于反射从方法中获取字段名。
@Testvoid 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);}}