【JAVA秒会技术之玩转高效分页】EasyUI + PageHelper实现分页

简介:  EasyUI + PageHelper实现分页 一、EasyUI页面分页 页面逻辑:页面初始化时,通过jquery easyui的DataGrid(数据表格)的url属性异步加载,返回指定的json格式数据,在通过pagination属性,展示分页工具栏。   表现层分析: 请求URL:/XXX/list 请求参数:Integer page、Integer rows(ea

 EasyUI + PageHelper实现分页

一、EasyUI页面分页

页面逻辑:页面初始化时,通过jquery easyui的DataGrid(数据表格)url属性异步加载,返回指定的json格式数据,在通过pagination属性,展示分页工具栏。

 

表现层分析

请求URL:/XXX/list

请求参数:Integer pageInteger rowseasyui分页控件请求的参数),其中page默认为1。

返回数据:json格式的数据(easyui分页控件请求的返回值JSON数据),格式如下:

{total:“2”,rows:[

      {“id”:”1”,”name”:”张三”}

      {“id”:”2”,”name”:”李四”}

]}

==>  再将Json对应的数据格式封装成POJO类DatagridResult。

   业务逻辑分析

根据page和rows分页查询条件,使用分页插件PageHelper进行分页查询。

将商品列表和记录总数封装到PO类对象中,并且将其转化为Json格式返回。

二、PageHelper数据库分页

mybatis分页插件PageHelper目前支OracleMysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

分页原理

 

使用方法

第一步:dao层的pom文件中添加pagehelper依赖

    <dependency>
	  <groupId>com.github.pagehelper</groupId>
	  <artifactId>pagehelper</artifactId>
      <version>1.0</version>
</dependency>

第二步:在Mybatis配置SqlMapConfig.xml中配置拦截器插件

<plugins>
	  <!-- com.github.pagehelper为PageHelper类所在包名 -->
	  <plugin interceptor="com.github.pagehelper.PageHelper">
		  <!-- 设置数据库方言 -->
		  <property name="dialect" value="mysql" />
	  </plugin>
   </plugins>

第三步:将Json对应的数据格式封装成POJO类DatagridResult并实现序列化接口

public class DatagridResult implements Serializable{
	private long total;// 记录总数
	private List rows; // 记录集合
}

第五步:开发Service层,主要逻辑:Ø 第四步:开发Dao层,使用逆向工程生成代码;

    @Override
	public DatagridResult queryItemList(Integer page, Integer rows) {
		if (page == null)
			page = 1;
		if (rows == null)
			rows = 30;
		// 1.设置分页信息
		PageHelper.startPage(page, rows);
		// 2.执行查询
		TbItemExample example = new TbItemExample();
		List<TbItem> list = mapper.selectByExample(example);
		// 3.获取分页查询后的数据
		PageInfo<TbItem> pageInfo = new PageInfo<>(list);
		// 4.封装结果对象,并返回
		DatagridResult result = new DatagridResult();
		result.setTotal(pageInfo.getTotal()); //设置总记录数
		result.setRows(list);  //设置每页展示数据集合
		return result;
	}

 第六步:开发Controller层,主要逻辑:

   @RequestMapping("/list")
   @ResponseBody
    public DatagridResult list(@RequestParam(defaultValue= "1") Integer page, Integer rows) {
		return service.queryItemList(page, rows);
	}

三、超时及警告问题解决

    原因:通过分页插件得到的结果,其实是List的子类Page(该类由分页插件提供),而该类只在服务层,表现层没有该类,在反序列化的时候,抛出该警告,不影响使用

 

    发布服务时,服务默认的响应时间为1秒,debug时需要显示设置,单位是毫秒

 





 

相关文章
|
1月前
|
Java
死磕-java并发编程技术(二)
死磕-java并发编程技术(二)
|
1月前
|
存储 Java 调度
死磕-java并发编程技术(一)
死磕-java并发编程技术(一)
|
6天前
|
存储 Java 大数据
该到重点啦—java的核心技术
该到重点啦—java的核心技术
7 1
|
7天前
|
安全 Java API
🌟探索Java宇宙:深入理解Java技术体系与JVM的奥秘
本文深入探讨了Java技术体系的全貌,从Java语言的概述到其优点,再到Java技术体系的构成,以及JVM的角色。旨在帮助Java开发者全面了解Java生态,提升对Java技术的认知,从而在编程实践中更好地发挥Java的优势。关键词:Java, JVM, 技术体系, 编程语言, 跨平台, 内存管理。
20 2
|
13天前
|
Web App开发 消息中间件 监控
使用 Java + WebSocket 实现简单实时双人协同 pk 答题:技术干货分享
【10月更文挑战第4天】在现代互联网应用中,实时互动已经成为提升用户体验的重要一环。特别是在在线教育、游戏竞技等领域,实时协同功能显得尤为重要。今天,我们将围绕“使用 Java + WebSocket 实现简单实时双人协同 pk 答题”这一主题,分享相关技术干货,帮助你在工作和学习中更好地理解和应用这一技术。
35 2
|
28天前
|
传感器 监控 数据可视化
【Java】智慧工地解决方案源码和所需关键技术
智慧工地解决方案是一种新的工程全生命周期管理理念。它通过使用各种传感器、数传终端等物联网手段获取工程施工过程信息,并上传到云平台,以保障数据安全。
70 7
|
7天前
|
SQL Java API
深入探索Java的持久化技术——JPA(Java Persistence API)
【10月更文挑战第10天】深入探索Java的持久化技术——JPA(Java Persistence API)
10 0
|
7天前
|
Java API 数据库
深入探索Java的持久化技术——JPA(Java Persistence API)
【10月更文挑战第10天】深入探索Java的持久化技术——JPA(Java Persistence API)
13 0
|
1月前
|
缓存 负载均衡 Dubbo
Dubbo技术深度解析及其在Java中的实战应用
Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
57 6
|
1月前
|
Java API
Java技术体系
Java技术体系包括运行于Java虚拟机上的各种语言及其相关程序,传统上由Java程序设计语言、Java虚拟机、Class文件格式、Java API类库以及第三方类库组成,可进一步细分为Java Card、Java ME、Java SE和Java EE四个平台。
48 3
Java技术体系