MyBatis中用LambdaQuerWrapper实现一个查询条件查询所有字段

代码实现如下: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;

 

请登录后发表评论

    没有回复内容