MyBatis-Plus条件构造器详解及应用 MyBatis-Plus 是一个 MyBatis 的增强工具QueryWrapper构建查询的工具UpdateWrapper用于构造更新条件LambdaQueryWrapper这是一个基于 Lambda 表达式的查询条件构造器调用使用的实体类属性的get方法使用比较灵活避免了硬编码LambdaUpdateWrapper基于 Lambda 表达式的更新条件构造器这篇文章针对QueryWWrapper进行应用QueryWrapper//通过实例化进行使用,无条件查询传递null即可QueryWrapper查询的实体类名queryWrappernewQueryWrapper();排序//升序queryWrapper.orderByAsc(列名);//降序queryWrapper.orderByDesc(列名);//排序 queryWrapper.orderBy(boolean condition, boolean isAsc, R... columns)//condition 是否使用该排序条件//isAsc 升序还是降序升序true 降序false//columns 按照哪一列进行排序 也可以是多个列queryWrapper.orderBy(true,true,列名1,列名2);模糊查询//likequeryWrapper.like(列名,模糊查询内容);//not likequeryWrapper.notLike(列名,模糊查询内容);//右模糊queryWrapper.likeLeft(列名,模糊查询内容);//左模糊queryWrapper.likeRight(列名,模糊查询内容);//非右[左]模糊匹配条件queryWrapper.notLikeLeft[notLikeRight](列名,模糊查询内容);等值查询//列名等于(eq)/不等于(ne)/大于(gt)/大于等于(ge)/小于(lt)/小于等于(le)值queryWrapper.eq(列名,值);//区间查询 betweenqueryWrapper.between(列名,起始值,结束值);//notBetweenqueryWrapper.notBetween(列名,起始值,结束值);集合匹配查询//in -- 在指定集合中queryWrapper.in(列名,值1,值2,值3);//notIn -- 不在指定集合中queryWrapper.notIn(列名,值1,值2,值3);指定查询列queryWrapper.select(列名1,列名2,...);子查询//exists(String existsSql) sql语句子查询queryWrapper.exists(select 字段 from 表名 where 条件)...其他查询条件;//notExistsqueryWrapper.notExists(select 字段 from 表名 where 条件);或、与//一种连接方式将前后条件连接到一起 or/andqueryWrapper.查询条件1.or[and]().查询条件2;分组查询//groupBy 进行分组queryWrapper.groupBy(分组字段名);//select需要查询的字段queryWrapper.select(字段1, count(1) 统计总数, avg(字段) 平均值,......);//分组后的筛选条件queryWrapper.having(条件)分页查询importcom.baomidou.mybatisplus.core.metadata.IPage;//通过IPage进行分页实现QueryWrapper实体类wrappernewQueryWrapper();wrapper.orderByAsc(排序字段名);//分页条件IPage实体类pagenewPage();page.setCurrent(1);//当前页page.setSize(5);//每页条数//查分页IPage实体类pageResultemployeeMapper.selectPage(page,wrapper);//当前页数据List实体类recordspageResult.getRecords();注意实现分页需要额外添加一个bean,可以直接放在启动类中也可以单独存在文件中//分页配置BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptornewMybatisPlusInterceptor();// 分页插件指定数据库类型PaginationInnerInterceptorpaginationInnerInterceptornewPaginationInnerInterceptor(DbType.MYSQL);// 常用配置项// false超出最大页返回空true回到第一页paginationInnerInterceptor.setOverflow(false);// 单页最大条数防止一次性查大量数据paginationInnerInterceptor.setMaxLimit(1000L);// join优化针对 COUNT 查询的 JOIN 优化策略提升性能paginationInnerInterceptor.setOptimizeJoin(true);interceptor.addInnerInterceptor(paginationInnerInterceptor);returninterceptor;}