今天分享常用API:
1、排序:
- // 组装查询条件
- QueryWrapper<User> wrapper = new QueryWrapper<>();
- // 按 id, age 字段进行升序
- wrapper.orderBy(true, true, "id", "age");
-
- // 实际执行 SQL : SELECT id,name,age,gender FROM user ORDER BY id ASC,age ASC
- List<User> users = userMapper.selectList(wrapper);
一个参数排序,倒序:
- LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
-
- queryWrapper.orderByDesc(true,Info::getUpdateTime);
多参数排序
lambdaQueryWrapper.orderByAsc(User::getAge).orderByDesc(User::getUserName);
2、不等于 <> 相关的方法如下
- // 组装查询条件
- QueryWrapper<User> wrapper = new QueryWrapper<>();
- // 不等于 <> 语句
- wrapper.ne("name", "犬小哈");
-
- // 实际执行 SQL : SELECT id,name,age,gender FROM user WHERE (name <> '犬小哈')
- List<User> users = userMapper.selectList(wrapper);
3、 使用ge(大于等于 >=)和le(小于等于 <=)
- LambdaQueryWrapper<Info> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.ge(Info::getProcessTime, query.getStartTime());
- queryWrapper.le(Info::getProcessTime, query.getEndTime());
配合日期格式:
- @DateTimeFormat(pattern = "yyyy-MM-dd")
- @ApiModelProperty(value = "开始时间")
- private LocalDateTime startTime;
-
- @DateTimeFormat(pattern = "yyyy-MM-dd")
- @ApiModelProperty(value = "结束时间")
- private LocalDateTime endTime;
4、忽略映射字段时可以在实体类属性上加注解:
- @TableField(exist = false)//表示该属性不为数据库表字段,有需要使用
- private Int age;
5、聚合查询:sum() 函数
- QueryWrapper
queryWrapper = new QueryWrapper<>(); - queryWrapper.select(" product_year,sum(output)as output");
- queryWrapper.eq(StringUtils.isNotEmpty(query.getCity()),"city", query.getCity());
- queryWrapper.eq("del_flag", DelFlagEnum.False.getCode());
- queryWrapper.in("product_year",yearList);
- queryWrapper.groupBy("product_year");
- List
statisticsList = statisticsMapper.selectList(queryWrapper);
6、
- QueryWrapper<UserInfo > queryWrapper = new QueryWrapper<>();
- queryWrapper.select("MAX(count_number) as countNumber")
- .lambda()
- .eq(UserInfo::getTodayDate,todayDate).
- last("LIMIT 1");
- UserInfo entity = userInfoMapper.selectOne(queryWrapper );
注意:count_number 是表结构的某个字段,countNumber是实体类UserInfo中的参数,一定要写对。
7、查询最大的某条数据
- SELECT
- t.id,
- t.resource_id as resourceId,
- max(t.start_time) as startTime,
- t1.name
- FROM
- depart_info t
- LEFT JOIN user_info t1 ON (t1.id = t.resource_id)
- where t1.department_id =1 and t.start_time > '2021-12-12'
- GROUP BY t.resource_id
即查询2021-12-12以后开始时间最大的数据。
8、查询某几个参数:select
- queryWrapper.select(UserInfo::getId,UserInfo::getName)
- queryWrapper.eq(UserInfo::getDelFlag,DelFlagEnum.False.getCode());
9、看到一篇文章也挺详细的,我就不在重复造轮子了: