select支持多查询,获取分页count
在我们使用mybatis 时,当我们根据分页去查询数据集时,需要传入的参数有page(页码)和size(每页的条数),而我们期望获取到的数据有,小于或等于size的list数据集,同时我们还需要得到一个count,总共的数据条数。
官方提供了一个select sql_calc_found_rows 字段 from 表 ... ; 然后再调用select found_rows(); 获取总记录数。 那么如何在mybatis中同时执行两个sql获取结果集?
解决方法:
(1)连接数据库的时候,指定可支持多查询“allowMultiQueries=true”,如配置文件中 jdbc.url=jdbc:mysql://localhost:3306/wash?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
(2)mybatis的xml文件中查询语句添加一个结果集,并且用逗号隔开。 resultMap="BaseResultMap, countAdminResultMap"。同时select 之后添加一个关键字 sql_calc_found_rows (必须)。
<resultMap type="Integer" id="countAdminResultMap">
<result column="count" jdbcType="INTEGER" javaType="Integer" />
</resultMap>
<select id="listdata" resultMap="BaseResultMap, countAdminResultMap" parameterType="java.util.Map">
select sql_calc_found_rows id, username, mobile, password, type
from sys_admin where 1 = 1
<include refid="Base_If_Condition" />
limit #{pageSizeBegin, jdbcType=INTEGER} , #{pageSize, jdbcType=INTEGER};
SELECT found_rows() as count;
</select>
(3)mapper文件方法名
List<?> listdata(Map<String, Object> paramMap);
(4)service方法
这里仅查看serviceImpl方法即可。 这里返回的List<?> 包含两个数据,一个是数据list,另一个是count。接收它们放入我们的Page对象即可。
public Page<Map<String, Object>> listdata(Map<String, Object> paramMap) {
List<?> list = adminMapper.listdata(paramMap);
List<Map<String, Object> > listMaps = new ArrayList<>();
listMaps = (List<Map<String, Object> >) list.get(0); //数据list
int count = ((List<Integer>)list.get(1)).get(0); //总记录数
Page<Map<String, Object> > page = new Page<Map<String, Object> >();
page.setData(listMaps);
page.setCount(count);
return page;
}
总结:通过这种方法,我们可以方便的获取到count,而不需要两次连接数据库,执行一次不必要的查询。 而以上这种方式主要利用的缓存,第二次查询直接从缓存中查出数据,花费时间可忽略不计。
本文转载自 https://blog.csdn.net/qq_31122833/article/details/83894992 ,用自己的话整理了一遍。方便以后回顾使用。
select支持多查询,获取分页count的更多相关文章
- MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查询条件分页
前几天做一个小小小项目,使用了MVC+Bootstrap,以前做分页都是异步加载Mvc部分视图的方式,因为这个是小项目,就随便一点.一般的列表页面,少不了有查询条件,下面分享下Drapper+Page ...
- 让Asp.net mvc WebAPI 支持OData协议进行分页查询操作
这是我在用Asp.net mvc WebAPI 支持 OData协议 做分页查询服务时的 个人拙笔. 代码已经开发到oschina上.有兴趣的朋友可以看看,欢迎大家指出不足之处. 看过了园子里的几篇关 ...
- ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口
14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...
- webform组合查询和分页
1.组合查询(1)数据访问类 //参数1:SQL语句 参数2:哈希表public List<Users> chas(string s,Hashtable has) { List<Us ...
- 利用DetachedCriteria实现模糊查询和分页
分类: Java-Developing 前段时间在做模糊查询,并利用数据库分页,DAO用hibernate实现,刚开始的时候 根据业务层的数据,拼hql语句进行查询,且不说要进行一些if判断,单 ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- 十四、C# 支持标准查询运算符的集合接口
支持标准查询运算符的集合接口. System.Linq.Enumeralbe类提供的一些常用的API 来执行集合处理 1.匿名类型 2.隐匿类型的局部变量 3.集合初始化器 4.集合 5.标准查询运算 ...
- LINQ 小项目【组合查询、分页】
使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...
随机推荐
- 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...
- 【SSO单点系列】(6):CAS4.0 单点流程序列图(中文版)以及相关术语解释(TGT、ST、PGT、PT、PGTIOU)
CAS 相关的内容好久没写了,可能下周会继续更新一些内容吧. 在上一篇中的单点流程序列图由于是从官网直接下载来的,上面都是英文,可能有的朋友看不懂,因此修改成中文的. PS:只修改了一个,第二个图明天 ...
- vmware vSphere虚拟网络(一)
为了更好的了解vSphere网络虚拟化解决方案,这里引入了一些概念,以便我们更好的了解虚拟网络. 一.网卡: 物理网卡称为vmnic,在ESXi中,第一块物理网卡叫做vmnic0,第二块叫做vmnic ...
- Python之路Python全局变量与局部变量、函数多层嵌套、函数递归
Python之路Python全局变量与局部变量.函数多层嵌套.函数递归 一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局 ...
- golang包引用解析
golang包引用解析 环境变量配置如下: GOROOT----[C:\Go] GOPATH----[F:\workspace\go_home] vs code配置如下: F:\workspace\g ...
- ThinkPHP U方法
方法1: {:U('User/Booking/bookingdetails')} 方法2: {:U('User/Booking/bookingdetails')}"+"&a ...
- DHCP协议及基本实现原理
DHCP(Dynamic Host Configuration Protocol):动态主机配置协议. DHCP的优缺点 DHCP服务优点:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主 ...
- A printf format reference page (cheat sheet)
Summary: This page is a printf formatting cheat sheet. I originally created this cheat sheet for my ...
- day--41 mysql索引原理与慢查询优化
mysql索引原理与慢查询优化一:什么是索引 01:索引的出现是为了提高查询数据的效率 02:索引在mysql叫做“键” 或则“key“(primary key,uniquekey ,还有一个inde ...
- R语言学习笔记(三)
5. 数据结构 5.1 数据结构简介 (1)向量 一个向量的所有元素必须有相同的类型(模式) (2)列表 列表可以非同质的 列表可按位置索引:lst[[2]] 抽取子列表:lst[c(2,5)] 列表 ...