一、条件构造器
官方文档:条件构造器
条件抽象类 Wrapper非常重要。他的子类AbstractWrapper有非常多方法。一些复杂的sql条件就可以使用"*AbstractWrapper"的子类来替代!
例如,WHERE 子句的一些条件查询。
1.QueryWrapper 使用
QueryWrapper 对象主要用于查询时设置条件。
主要参考官方,下列代码供参考,使用的还是之前的user数据库。
@SpringBootTest
public class WrapperTest {
@Autowired
UserMapper userMapper;
@Test
public void t1() {
// 查询年龄等于20的用户,且名字不等于'123'的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 20).ne("name", "123");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t2() {
// 查询id大于3,且年龄大于等于18的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("id", 3).ge("age", 18);
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t3() {
// 查询id小于10,且年龄小于等于20的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lt("id", 10).le("age", 20);
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t4() {
// 查询id在1-10,且年龄不在0-20和30-40的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("id", 1, 10).notBetween("age", 0, 20)
.notBetween("age", 30, 40);
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t5() {
// 查询邮箱包含test,名字不包含张三的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("email", "test").notLike("name", "张三");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t6() {
// 查询id为1,2,3,4,5,查询结果降序排序。
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.in("id", 1,2,3,4,5).orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
@Test
public void t7() {
// 查询id在指定值的用户。(指定值使用sql语句进行查询)
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.inSql("id", "SELECT id FROM user WHERE id <= 3");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
}
官方文档中的方法作用解释图:
上图图参考自他人博客:链接
2.UpdateWrapper 使用
UpdateWrapper 可以用于更新操作,更新数据为指定的值。
@Test
public void t8() {
// 将所有创建时间设置为当前时间
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.set("create_time", new Date());
userMapper.update(null, wrapper);
}
至此,条件构造器 Wrapper已结束。