栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

MybatisPlus实现条件分页

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MybatisPlus实现条件分页

MybatisPlus实现分页
    • 条件查询的需求
    • TeacherQuery用来封装条件查询
    • Controller中调用
    • serviceImpl接口实现类

现在MybatisPlus的应用次数很多,自动生成以及封装了很多函数,今天记录下如何实现MybatisPlus下的分页。

条件查询的需求

按名称,头衔以及起始时间来查询

TeacherQuery用来封装条件查询

表示可以按名称,头衔以及起始时间来查询

// An highlighted block
@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装")
@Data
public class TeacherQuery implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "教师名称,模糊查询")
    private String name;

    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;

    @ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10")
    private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换

    @ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10")
    private String end;
}
Controller中调用

这个pageQuery( )是在Service中定义的方法

// An highlighted block
    //分页的条件查询方法
    @PostMapping("{page}/{limit}")				//page代表当前的页数,limit表示每页限定的条数
    public R getPageTeacher(@PathVariable long page,
                            @PathVariable  long limit,		//TeacherQuery对象不是必须要传的,没有默认为查询全部
                            @RequestBody(required = false) TeacherQuery teacherQuery){		
            Page eduTeacherPage = new Page<>(page,limit);	//用Mp中封装好的方法,声明一个Page,传入参数
            teacherService.pageQuery(eduTeacherPage,teacherQuery);//teacherQuery是封装的条件查询对象
            List teacherList = eduTeacherPage.getRecords();				//page对象service调用后才能拿到数据
            long total = eduTeacherPage.getTotal();		//获取条数

            return R.ok().data("TeacherList",teacherList).data("total",total);
    }
serviceImpl接口实现类

如果这里不做非空判断,会出现查询张三,等级,起始时间为空的情况,导致查询结果为null

@Service
public class TeacherServiceImpl extends ServiceImpl implements TeacherService {
    @Override
    public void pageQuery(Page pageParam, TeacherQuery teacherQuery) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("gmt_create");		//按照字段降序

        if(teacherQuery == null){				//如果传过来的查询条件为空就直接调用系统封装的分页方法
            baseMapper.selectPage(pageParam, queryWrapper);
            return;
        }

        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();

        if (!StringUtils.isEmpty(name)) {
            queryWrapper.like("name", name);		//查询条件不为空则判断是否有name
        }

        if (!(level == null)) {
            queryWrapper.eq("level", level);        //查询条件不为空则判断是否有等级
        }

        if (!StringUtils.isEmpty(begin)) {
            queryWrapper.ge("gmt_create", begin);
        }

        if (!StringUtils.isEmpty(end)) {
            queryWrapper.le("gmt_create", end);
        }

        baseMapper.selectPage(pageParam, queryWrapper);		//拿到查询条件调用分页方法
    }
}

这就是完整的条件分页查询流程啦。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号