@Test public void queryWrapperOne() { QueryWrapperqueryWrapper = 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() { QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", "BNTang"); // selectOne:返回的是一条记录,当出现多条时会报错 User user = userMapper.selectOne(queryWrapper); System.out.println(user); }
@Test public void queryWrapperThree() { QueryWrapperqueryWrapper = 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() { QueryWrapperqueryWrapper = 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() { QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper .notLike("name", "BNTang") .likeRight("email", "zq"); // 返回值是Map列表 List
@Test public void queryWrapperSix() { QueryWrapperqueryWrapper = 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"); // 修改条件 UpdateWrapperuserUpdateWrapper = 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"); // 修改条件 UpdateWrapperuserUpdateWrapper = 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() { QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("id"); List users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); }
注意事项:
只能调用一次, 多次调用以最后一次为准有 sql 注入的风险, 请谨慎使用
@Test public void queryWrapperTen() { QueryWrapperqueryWrapper = new QueryWrapper<>(); queryWrapper.last("limit 1"); List users = userMapper.selectList(queryWrapper); users.forEach(System.out::println); }
@Test public void queryWrapperEleven() { QueryWrapperqueryWrapper = 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); // 修改条件 UpdateWrapperuserUpdateWrapper = 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); }