代码实现如下:params 是传的参数,key 为查询关键字,startTime 和 endTime 为时间区间条件。DateUtil 为hutool中的日期工具类
public PageUtils queryPage(Map<String, Object> params) {
String key = (String) params.get("key");
String startTime = (String) params.get("startTime");//日期格式为yyyy-MM-dd
String endTime = (String) params.get("endTime");
LambdaQueryWrapper<WelfareFuneralEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// 模糊搜索条件
if (StrUtil.isNotBlank(key)) {
lambdaQueryWrapper.and(
wrapper -> wrapper.like(WelfareFuneralEntity::getOrgname, key).or()
.like(WelfareFuneralEntity::getOrgcode, key).or()
.like(WelfareFuneralEntity::getZbrs, key).or()
.like(WelfareFuneralEntity::getBwrs, key).or()
.like(WelfareFuneralEntity::getHhsb, key).or()
.like(WelfareFuneralEntity::getNjhhl, key).or()
.like(WelfareFuneralEntity::getBycs, key).or()
.like(WelfareFuneralEntity::getLcg, key).or()
.like(WelfareFuneralEntity::getGhtgw, key).or()
.like(WelfareFuneralEntity::getYsy, key)
);
}
// 时间范围查询
if (StrUtil.isNotEmpty(startTime) && StrUtil.isNotEmpty(endTime)) {
startTime = DateUtil.format(DateUtil.parse(startTime), "yyyy-MM-dd 00:00:00");
endTime = DateUtil.format(DateUtil.parse(endTime), "yyyy-MM-dd 23:59:59");
lambdaQueryWrapper.ge(WelfareFuneralEntity::getCreatedTime,startTime);
lambdaQueryWrapper.le(WelfareFuneralEntity::getCreatedTime,endTime);
}
//排序条件,默认按创建时间倒叙排序
lambdaQueryWrapper.orderByDesc(WelfareFuneralEntity::getCreatedTime);
IPage<WelfareFuneralEntity> page = this.page(new Query<WelfareFuneralEntity>().getPage(params),lambdaQueryWrapper);
return new PageUtils(page);
}
最终生成的SQL 如下:
SELECT
id,
orgname,
orgcode,
gbzgzj,
yhry,
bzry,
kscw,
kfcw,
sycw,
swry,
shry,
ext1,
ext2,
created_by,
created_time,
updated_by,
updated_time
FROM
welfare_orginfo
WHERE
(
(
orgname LIKE '%测试%'
OR orgcode LIKE '%测试%'
OR gbzgzj LIKE '%测试%'
OR yhry LIKE '%测试%'
OR bzry LIKE '%测试%'
OR kscw LIKE '%测试%'
OR kfcw LIKE '%测试%'
OR sycw LIKE '%测试%'
OR swry LIKE '%测试%'
OR shry LIKE '%测试%'
)
AND created_time >= '2021-07-18 00:00:00'
AND created_time <= '2021-07-28 23:59:59'
)
ORDER BY
created_time DESC LIMIT 0,
10;
没有回复内容