mybatisplus查询总数(mybatisplus分页查询到的总数据量)

http://www.itjxue.com  2023-01-30 10:31  来源:未知  点击次数: 

mybatis-plus配置xml进行多表查询

mybatis-plus多表查询,需自己写xml进行查询。

在mapper中定义,如需分页查询可添加page。

在xml中编写sql语句,这里进行简单的自连接查询

在serviceImpl中进行返回。

controller

pom.xml中resource设置参考如下:

mybatis-plus分页查询

如果只是单表,那么分页查询就容易的多了

这里的@ModelAttribute注解可以将前端传过来的 current 和 size 字段映射到Page对象中

BaseController中

关联多表分页查询

PbBuildingController中

PbBuildingService

PbBuildingMapper

PbBuildingMapper.xml

如果仅仅查列表而不需要分页,前端不需要传current和size参数,而后台不需要Page参数

如果Mybatis-Plus分页查询且不返回总数total

使用 // 不查询总记录数 page.setSearchCount(false);

Mybatis-Plus分页查询不返回总数total

Mybatis分页对比MybatisPlus分页

Mybatis使用内存分页

Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页。可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。

???????分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。

————————————————

MybatisPlus是物理分页

基本步骤是:

1 原生SQL解析

2 判断有无page分页对象。没有对象就直接进行SQL操作,有对象就继续分页解析

3 count语句优化。根据SQL条件进行count优化,这点不同于传统的 select count(1) from (你的 业务 SQL) 做下简单的封装,详细源码可以自己看,或者打印出执行的SQL可以清楚的看到

4 通过count数量和之前前端传递来的分页pageNum和pageSize对SQL进行拼接

5最终执行拼接完整的SQL实现分页处理

总结:mybatis的是内存分页,全查出来丢在内存中,这样子很不好! 现在大面积使用的插件MybatisPlus是物理分页,先查询总数(不像网上很多人说的只是简单外包一层计算count),再根据分页参数瓶装SQL然后执行分页查询

(责任编辑:IT教学网)

更多

推荐Flash实例教程文章