首页 > 其他分享 >分页查询和条件分页查询

分页查询和条件分页查询

时间:2023-06-10 13:34:45浏览次数:43  
标签:分页 page IPage 条件 new 查询 public

分页查询

分析:

  • 分析文档要求

  • 查看前端传递给后台的参数

  • 分析参数进行编码

  • 后台返回给前端的数据

思路

浏览器 - > Controller层 - > Service层 - > Mapper层 - > 数据库

设置分页拦截器

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        // 创建MybatisPlusInterceptor拦截器对象
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        // 添加分页拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

IPage分页对象的常用调用方法

​ IPage内部原理是基于拦截去,拦截的是方法以及方法中的参数,会判断是否查询操作。如果是查询操作,才会进入分页的逻辑处理。进入分页的逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实体类。如果不存在就不进行分页,存在则将该参数赋值给IPage对象。再进行拼接sql处理完成IPage对象。

void selectPage() {
    // 1 为当前页码  2 为每页的记录数
	IPage<User> page=new Page<>(1,3);
	userDao.selectPage(page,null);
	System.out.println("当前页码值:"+page.getCurrent());
	System.out.println("每页显示数:"+page.getSize());
	System.out.println("一共多少页:"+page.getPages());
	System.out.println("一共多少条数据:"+page.getTotal());
	System.out.println("数据:"+page.getRecords());
}

流程

Controller层

@RestController
@RequestMapping("/emps")
public class EmpController {
    
    @Autowired
    private EmpService empService;

// @RequestParam使用defaultValue属性设置默认值
// @GetMapping请求映射的地址
@GetMapping
    public Result selectLimit(@RequestParam(defaultValue = "1") Integer page,
                             @RequestParam(defaultValue = "10") Integer pageSize) {
        // 调用业务层进行查询
        PageBean pageBean = empService.selectLimit(page, pageSize); 
        // 返回打包封装后的数据
        return Result.success(pageBean);
    }
}

Service层

@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper, Emp> implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean selectLimit(Integer page, Integer pageSize) {
        // 定义Emp实体对象封装操作类
        QueryWrapper<Emp> queryWrapper = new QueryWrapper<>();
        // 进行分页查询
        IPage<Emp> iPage = new Page<>(page, pageSize);
        iPage = empMapper.selectPage(iPage, queryWrapper);

        //封装返回值 返回
        return new PageBean(iPage.getTotal(), iPage.getRecords());
    }
}

Mapper层

@Mapper
public interface EmpMapper extends BaseMapper<Emp> {

}

条件分页查询

Controller 层

  1. 接受参数(分页参数, 查询条件)
  2. 调用service进行条件分页查询, 获取pagebean
  3. 响应

Service 层

借阅:MyBatis-Plus分页插件IPage的使用展示------分页查询_mybatisplus ipage_星域_03zhan的博客-CSDN博客

标签:分页,page,IPage,条件,new,查询,public
From: https://www.cnblogs.com/wywbo/p/17471161.html

相关文章

  • 条件判断
    ifelseifelifmatch...casepython3.10增加了match...case的条件判断,不需要再使用一串if-else来判断了match后的对象会一次匹配case后面的内容,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_可以匹配一切语法格式:matchsubject:case<pattern_1>:......
  • EXCEL如何实现输入指定ID查询对应的信息
    要求:在第2行输入ID按enter键后查询出第4行的信息。步骤:(1)首先将第2行单元格的属性【保护】中取消【锁定】,因为在要在此行输入需要查询的ID,在锁定工作表的情况下,要保障此行是可写的。(备注:第2行需调整为文本格式) (2)本次的实验数据只有三个条目(ID:0201,0202,0203)将这三行数据放在工......
  • 地铁查询
    packagecom.example.subway1;importandroid.view.View;importandroid.widget.EditText;importandroid.widget.TextView;importandroidx.appcompat.app.AppCompatActivity;importandroid.os.Bundle;importdatabase.DBHelper;importjava.util.ArrayList;impor......
  • 前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页
    前端vue简单好用的上拉加载下拉刷新组件,支持列表分页本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12942效果图如下:    ####使用方法```使用方法<!--pullDown:下拉刷新back-top:回到顶部 --><ccPullScro......
  • ms sql 表 索引查询
    SELECTOBJECT_NAME(IDX.object_id)Table_Name,IDX.nameIndex_name ,PAR.rowsNumOfRows ,IDX.type_descTypeOfIndexFROMsys.partitionsPARINNERJOINsys.indexesIDXONPAR.object_id=IDX.object_idANDPAR.index_id=IDX.index_idANDIDX.type......
  • 上下翻页按钮,上一页 下一页 vue2,分页
    已经有每一页对应的数据,一共五页,点击到最后一页再点下一页按钮时回到第一页 <divclass="button-list"><[email protected]="handleLeft"><iclass="el-icon-arrow-left"></i>{{ifchinese?'......
  • 不用循环和条件判断打印1-1000
    //z不用循环和条件判断打印1-1000//z2011-05-2419:16:07@is2120#include<iostream>template<intN>structNumberGeneration{staticvoidout(std::ostream&os){NumberGeneration<N-1>::out(os);os<<N<&......
  • ArcEngine|空间查询功能
    所有的代码已经传到了我的GitHub,需要的请自取,GitHub项目地址:https://github.com/weltme/T_ArcMap(1)界面设计(2)思路​ 就实现细节而言,实例通过ISpatialFilter接口来定义空间查询条件,其Geometry属性确定用来查询的空间几何体,SpatialRel属性定义查询所使用的所有空间关系,为esr......
  • 代驾创业,注册代驾公司条件
    代驾行业经过多年的发展,已经变得比较成熟,代驾的市场持续性的高速发展。很多没有接触过代驾行业的创友,虽然对代驾行业很感兴趣,但是却不知道创业之路从何开始,下面就让指针跃动一起来跟大家聊聊这个话题吧。首先想做代驾创业,那就是要先注册一个公司,需要满足哪些基本条件呢?......
  • Nest.js + TypeOrm:原始SQL查询及其参数绑定
    上一篇Nest.js+TypeOrm:安装、编写实体类参数化原始SQL查询使用DataSource,注意,如果是PostgreSQL,则参数占位符不能使用问号?,只能使用$n,并且在没有表名的情况下需要指定类型:否则,会出现错误:PostgreSQL-ERROR:couldnotdeterminedatatypeofparameter$1,参见:https://b......