在引入条件构造器后,有时基本可以不用进行mapper的创建及xml文件sql的编写即可完成数据的获取修改相关工作!极大的提高了工作效率。:

关于本人用的较多的QueryWrapper的用法:下面是一些实例:

查询:

//查询第一条记录
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
User user = mapper.selectOne(queryWrapper);

//查询总记录数
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
Integer count = mapper.selectCount(queryWrapper);

//查询所有记录:返回实体列表 List<user>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectList(queryWrapper );

//查询所有记录:返回map列表 List<Map<String,Object>>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectMaps(queryWrapper);

//查询所有记录并翻页:返回Ipage<entity>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<User> userIPage = mapper.selectPage(page, queryWrapper);

//查询所有记录并翻页:返回Ipage<Map<String, Object>>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper);

//查询所有记录:lambda
LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User>lambdaQuery();
lambdaQuery.likeRight(User::getName,"杨")
    .and(lqw->lqw.lt(User::getAge,40).or().isNostNull(User::getEmail));
List<User> userList=userMapper.selectList(lambdaQuery);
userList.forEach(System.out::println)

//查询所有记录:chain
List<User> userList=new LambdaQueryChainWrapper<User>(userMapper)
    .like(User::getName,"杨").ge(User::getAge,20).list();

更新

//形式一:wrapper
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>();
updateWrapper.eq("id",1);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);

//形式二:whereWrapper
User whereUser=new User();
whereUser.setId(1);
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>(whereUser);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);

//形式三:lambda
LambdaUpdateWrapper<User> lambdaUpdateWrapper=Wrappers.<User>lambdaUpdate();
lambdaUpdateWrapper.eq(User::getId,1).set(User::getName,"张三");
int result=baseMapper.update(null,lambdaUpdateWrapper);

//形式四:链式
boolean update=new LambdaUpdateChainWrapper<User>(userMapper)
    .eq(User::getId,1).set(User::getName,"张三").update();

删除

LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User>lambdaQuery();
lambdaQuery.eq(User::getAge,27).or().gt(User::getAge,41);
int rows=userMapper.delete(lambdaQuery);

附带一张wrapper完整的方法顺序图

查询方式          说明
  setSqlSelect    设置 SELECT 查询字段
  where           WHERE 语句,拼接 + WHERE 条件
  and AND         语句,拼接 + AND 字段=值
  andNew          AND 语句,拼接 + AND (字段=值)
  or              OR 语句,拼接 + OR 字段=值
  orNew           OR 语句,拼接 + OR (字段=值)
  eq              等于=
  allEq           基于 map 内容等于=
  ne              不等于<>
  gt              大于>
  ge              大于等于>=
  lt              小于<
  le              小于等于<=
  like            模糊查询 LIKE
  notLike         模糊查询 NOT LIKE
  in              IN 查询
  notIn           NOT IN 查询
  isNull          NULL 值查询
  isNotNull       IS NOT NULL
  groupBy         分组 GROUP BY
  having          HAVING 关键词
  orderBy         排序 ORDER BY
  orderAsc        ASC 排序 ORDER BY
  orderDesc       DESC 排序 ORDER BY
  exists          EXISTS 条件语句
  notExists       NOT EXISTS 条件语句
  between         BETWEEN 条件语句
  notBetween      NOT BETWEEN 条件语句
  addFilter       自由拼接 SQL
  last            拼接在最后,例如:last(“LIMIT 1”)

官方文档:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper

最后修改:2021 年 12 月 12 日
如果觉得我的文章对你有用,请随意赞赏