@Test
public void queryWrapperOne() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.
isNull("name")
.ge("age", 23)
.isNotNull("email");
// 逻辑删除
int result = userMapper.delete(queryWrapper);
System.out.println(result);
// 最终的语句为:UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL
}

@Test
public void queryWrapperTwo() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "BNTang");
// selectOne:返回的是一条记录,当出现多条时会报错
User user = userMapper.selectOne(queryWrapper);
System.out.println(user);
}

@Test
public void queryWrapperThree() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 20, 30);
Integer count = userMapper.selectCount(queryWrapper);
System.out.println(count);
}

个别参数说明:
params: key 为数据库字段名, value 为字段值
如果想表示 null isNull,则在 value 取值的时候传入一个 null, 为 null 时调用 isNull 方法, 为false时则忽略value为null的,也就是不拼接 value 为 null 的查询条件字段
@Test
public void queryWrapperFour() {
QueryWrapper queryWrapper = new QueryWrapper<>();
Map queryParamsMap = new HashMap<>();
queryParamsMap.put("id", 1373266771933462530L);
queryParamsMap.put("name", "BNTang");
queryParamsMap.put("age", 23);
queryWrapper.allEq(queryParamsMap);
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}

个别参数说明
filter: 过滤函数, 是否允许字段传入比对条件中
params 与 null、IsNull 同上

如上图可看到,只添加了一个 id 查询的条件因为我写的过滤条件为要包含 i 这个字符串,所以只有第一个 key, value 包含了所以就只添加了 id
@Test
public void queryWrapperFive() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper
.notLike("name", "BNTang")
.likeRight("email", "zq");
// 返回值是Map列表
List

@Test
public void queryWrapperSix() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", 1, 2, 3);
queryWrapper.inSql("id", "select id from user where id < 3");
// 返回值是Object列表
List

注意事项:
主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)
@Test
public void queryWrapperSeven() {
// 修改值
User user = new User();
user.setAge(99);
user.setName("BNTang6666");
// 修改条件
UpdateWrapper userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper
.like("name", "BNTang")
.or()
.between("age", 20, 30);
int result = userMapper.update(user, userUpdateWrapper);
System.out.println(result);
}


@Test
public void queryWrapperEight() {
// 修改值
User user = new User();
user.setAge(99);
user.setName("BNTang6666");
// 修改条件
UpdateWrapper userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper
.like("name", "A")
.or(i -> i.eq("name", "BNTang6666").ne("age", 20));
int result = userMapper.update(user, userUpdateWrapper);
System.out.println(result);
}

@Test
public void queryWrapperNine() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("id");
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}

注意事项:
只能调用一次, 多次调用以最后一次为准有 sql 注入的风险, 请谨慎使用
@Test
public void queryWrapperTen() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.last("limit 1");
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}

@Test
public void queryWrapperEleven() {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.select("id", "name", "age");
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}

@Test
public void queryWrapperTwelve() {
// 修改值
User user = new User();
user.setAge(10);
// 修改条件
UpdateWrapper userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper
.like("name", "A")
// 除了可以查询还可以使用set设置修改的字段
.set("name", "BNTang")
// 可以有子查询
.setSql(" email = '303158131@qq.com'");
int result = userMapper.update(user, userUpdateWrapper);
System.out.println(result);
}
