• 分页查询实现


    目录

    1.实体类

    2.Mapper层

    2.1.xxxMapper接口

    2.2.xxxMapper.xml文件

    3.Service层

    3.1.xxxService接口

    3.2.xxxServiceImpl层

    4.xxxController层

    5.调用接口

    6.总结

    1.实体类

    与数据库交互和与前端交互的实体类

    这个Model是与数据库交互的实体类,其中的属性要与数据库中的字段对应,比如数据库字段为model_id:int8,那么实体类中就得是Long modelId这样的。然后这个Model中首先一定要跟数据库一一对应,然后可以多添加属性,这里因为要分页查询,所以要在Model里面添加pageNum和pageSize属性。

    这个ModelV1是写的与前端交互的一个实体类,写在vo层的,就是我把要展示给前端的那些属性都写在里面了(也可以直接将写的Model类传给前端,看自己需求)如果Model中有一个不能缺少的属性,然后给前端展示的时候不需要展示这个属性,那么这时写一个ModleV1,来展示给前端就比较好。

    总结就是:与数据库交互的实体类,首先确保属性与数据库字段一一对应,其次在这个基础上可以按需添加一些其他属性。与前端交互的实体类按你要传给前端的内容编写。

    2.Mapper层

    2.1.xxxMapper接口

    这里的查询方法是是根据需求写的条件查询,其实就是正常的查询加上if条件

    返回值是List(返回给前端看),入参是Model对象(与数据库交互)

    1. //根据条件查询列表
    2. List queryModelByConditions(Model queryConditions);

    2.2.xxxMapper.xml文件

    1. <select id="queryModelByConditions" parameterType="xxx.xxx.xxx.index.domain.Model" resultType="xxx.xxx.xxx.index.domain.vo.ModelV1">
    2. SELECT
    3. t.id as id
    4. , t.model_name as modelName
    5. , t.model_description as modelDescription
    6. , (select title from params where id = t.model_type) as modelType
    7. , t.report_id as reportId
    8. , t.topic_id as topicId
    9. , t.create_user_id as createUserId
    10. , t.create_time as createTime
    11. , t.update_user_id as updateUserId
    12. , t.update_time as updateTime
    13. , t.del_flag as delFlag
    14. FROM model t
    15. where 1=1
    16. and t.del_flag = 0
    17. <if test="modelName != null and modelName != ''" > AND model_name like concat('%',#{modelName},'%') if>
    18. <if test="modelType != null" > AND model_type = #{modelType} if>
    19. select>

    这个查询就是简单的按需查询

    3.Service层

    3.1.xxxService接口

    3.2.xxxServiceImpl层

    这里直接是使用封装类来实现的(具体原理我还不是很明白,先用就完事了)

    1. @Override
    2. public BaseResponseVM getModelLists(Model model) {
    3. PageHelper.startPage(model.getPageNum(),model.getPageSize());
    4. List models = modelMapper.queryModelByConditions(model);
    5. PageInfo pageInfo = new PageInfo<>(models);
    6. return BaseResponseVM.getSuccessInstance(pageInfo);
    7. }

    4.xxxController层

    5.调用接口

    1. {
    2. "pageNum":1,
    3. "pageSize":15,
    4. "modelType":"27"
    5. }

    6.总结

    创建实体类(包含pageNum和pageSize),正常编写mapper,看3.service层

  • 相关阅读:
    JS学习总结
    最强ADI SHARC系列DSP:ADSP-SC589的开发入门详解
    Kernel编译报错:对yaml_emitter_initalize“未定义引用
    MongoDB第二话 -- MongoDB高可用集群实现
    【== 和 equals 的区别是什么?】
    变种水仙花C,超详细思路+源代码
    Github使用指南
    A Self-Attentive model for Knowledge Tracing论文笔记和代码解析
    全方位解读「大数据」:定义、分析、工具、应用与案例
    主流嵌入式操作系统有哪些
  • 原文地址:https://blog.csdn.net/qq_43880100/article/details/132730802