java自定义分页标签实例

合集下载

jpage分页

jpage分页

今天,我给大家写出我的一个分页例子,希望对大家有用:首先inbox.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="c"uri="/jsp/jstl/core"%><%@taglib prefix="f"uri="/jsp/jstl/fmt"%><%@taglib prefix="fn"uri="/jsp/jstl/functions"%><html><head><title>无标题文档</title><meta http-equiv="Content-Type"content="text/html; charset=utf-8"/><meta name="viewport"content="width=device-width, initial-scale=1.0"><!-- 最新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet"href="${pageContext.request.contextPath}/css/jPages.css"><!-- 待修改 --><!-- jQuery文件。

务必在bootstrap.min.js 之前引入 --><link rel="stylesheet"href="/twitter-bootstrap/3.0.3/css/bootstrap.min.css"><link rel="stylesheet"href="/twitter-bootstrap/3.0.3/css/bootstrap-theme.min.css"><link rel="stylesheet"href="/bootstrap-datepicker/1.3.0/css/datepicker.min.css"><!-- jQuery文件。

java pageinfo用法

java pageinfo用法

java pageinfo用法Java中的PageInfo用于分页查询时获取分页信息,包括总页数、总记录数、当前页码等。

PageInfo类是MyBatis自带的工具类,通过引入mybatis依赖后,可以直接使用。

使用PageInfo需要先进行分页查询,然后将查询结果传入PageInfo构造函数中。

例如:```javaList<User> userList =userMapper.selectByExample(example);PageInfo<User> pageInfo = new PageInfo<>(userList);```其中User是查询结果的实体类,example是查询条件。

通过PageInfo对象可以获取到以下分页信息:- getTotal():获取总记录数- getPages():获取总页数- getPageNum():获取当前页码- getPageSize():获取每页记录数- isHasNextPage():判断是否有下一页- isHasPreviousPage():判断是否有上一页- navigatepageNums(int navigatePages):获取当前页码的前后各navigatePages页码例如,获取总页数代码如下:```javaint total = pageInfo.getPages();```获取当前页码的前后各3页的页码:```javaint[] navigatePageNums = pageInfo.navigatepageNums(3); ```以上就是Java中PageInfo的用法。

java分页公式(一)

java分页公式(一)

java分页公式(一)Java分页公式1. 什么是分页公式?分页公式是用于在Java程序中对数据进行分页展示的数学公式。

它可以根据每页显示的数据数量和当前页数,计算出数据在总量中的起始位置和结束位置,从而实现数据分页的功能。

2. 分页公式的常用公式总页数的计算公式总页数的计算公式是根据总数据量和每页显示数据量来计算的,公式如下:totalPage = ceil(totalCount / pageSize);其中,totalCount表示总数据量,pageSize表示每页显示的数据量,totalPage表示总页数。

举例说明:假设总共有50条数据,每页显示10条数据,那么根据上述公式,总页数为50 / 10 = 5。

当前页数据起始位置的计算公式当前页数据的起始位置是根据当前页数和每页显示数据量来计算的,公式如下:startIndex = (currentPage - 1) * pageSize;其中,currentPage表示当前页数,从1开始计数,pageSize表示每页显示的数据量,startIndex表示当前页数据的起始位置。

举例说明:假设当前页为第3页,每页显示10条数据,那么根据上述公式,起始位置为(3 - 1) * 10 = 20。

当前页数据结束位置的计算公式当前页数据的结束位置是根据当前页数据的起始位置和每页显示数据量来计算的,公式如下:endIndex = startIndex + pageSize - 1;其中,startIndex表示当前页数据的起始位置,pageSize表示每页显示的数据量,endIndex表示当前页数据的结束位置。

举例说明:假设当前页数据起始位置为20,每页显示10条数据,那么根据上述公式,结束位置为20 + 10 - 1 = 29。

3. 总结以上列举了Java分页公式中常用的三个公式,分别是总页数的计算公式、当前页数据起始位置的计算公式和当前页数据结束位置的计算公式。

MybatisPlus自定义方法实现分页

MybatisPlus自定义方法实现分页

MybatisPlus自定义方法实现分页MyBatis Plus是一款基于MyBatis的强大ORM(Object Relational Mapping)框架,提供了很多方便的功能和特性,其中包括分页查询功能。

虽然MyBatis Plus已经提供了默认的分页查询方法,但有时我们可能需要自定义一些分页查询的方法来满足特定的需求。

下面将介绍如何使用MyBatis Plus来自定义方法实现分页查询。

首先,我们需要在项目中引入MyBatis Plus的依赖。

可以在`pom.xml`文件中添加以下依赖:```xml<dependency><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version></dependency>```接下来,我们需要定义一个Mapper接口,在该接口中添加自定义的分页查询方法。

可以在Mapper接口中定义一个方法,参数为`Page`对象和其他查询条件,返回值为`IPage`对象。

```javaimport org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper extends BaseMapper<User>```然后,在对应的Mapper.xml文件中编写SQL语句来实现分页查询。

可以使用MyBatis的分页插件`PageHelper`来完成分页查询。

在Mapper.xml中添加以下代码:```xmlSELECT * FROM user WHERE name LIKE CONCAT('%',#{name},'%') </select>```在这个例子中,我们使用`SELECT * FROM user`查询所有符合条件的记录。

Java实现分页功能常见的几种方法

Java实现分页功能常见的几种方法

Java实现分页功能常见的⼏种⽅法⼀、limit关键字service层@Service@Transactionalpublic class ImplStudentService implements StudentService {@Resourceprivate StudentDao studentDao;@Overridepublic List<Student> selectAllStudent(String province, Integer offset, Integer limit) {return studentDao.selectAll(province,offset,limit);}}sql语句select * from student where province = #{province} limit #{offset},#{limit}⼆、hibernate分页service层@Overridepublic List getStudents(Integer pageNo,Integer pageSize) throws Exception {// 分页数据int[] startIdAndCount = new int[2];startIdAndCount[0] = pageNo * pageSize;startIdAndCount[1] = pageSize;return studentDao.selectStudentsByPage(startIdAndCount);}dao层@Overridepublic List findByHqlPage(int[] startIdAndCount) throws Exception {String hql = "...";try {Query query = getSession().createQuery(hql);// 设置分页if (startIdAndCount != null && startIdAndCount.length > 0) {int rowStartIdx = Math.max(0, startIdAndCount[0]);if (rowStartIdx > 0) {query.setFirstResult(rowStartIdx);// 设置开始取值的索引}if (startIdAndCount.length > 1) {int rowCount = Math.max(0, startIdAndCount[1]);if (rowCount > 0) {query.setMaxResults(rowCount);// 设置结束取值的索引}}}return query.list();} catch (RuntimeException re) {log.error("分页查询失败!", re);throw re;}}三、截取List查询结果分页(简单粗暴)...List<StudentEnroll> students = studentlDao.getAllStudents();int count = 0;if(studentEnrolls != null && studentEnrolls.size() > 0) {count = studentEnrolls.size();int fromIndex = pageNo * pageSize;int toIndex = (pageNo + 1) * pageSize;if(toIndex > count) {toIndex = count;}List<StudentEnroll> pageList = studentEnrolls.subList(fromIndex, toIndex);...四、mybatis框架pageHelper插件分页Spring整合:导⼊pom.xml<!-- https:///artifact/com.github.pagehelper/pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version></dependency>配置项⽬配置⽂件(我在spring和mybatis整合的配置⽂件中配置的,如果在mybatis核⼼配置⽂件中配置,百度⼀下) <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 依赖数据源 --><property name="dataSource" ref="dataSource"/><!-- 注册加载myBatis映射⽂件 --><property name="mapperLocations"><array><value>classpath*:com/yyz/mapper/*Mapper.xml</value></array></property><!-- PageHelper分页配置 --><property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><!--使⽤下⾯的⽅式配置参数,⼀⾏配置⼀个,后⾯会有所有的参数介绍 --><value><!--helperDialect属性来指定分页插件使⽤哪种⽅⾔。

mybatis-plus分页page写法

mybatis-plus分页page写法

MyBatis-Plus 是一个MyBatis 的增强工具,在MyBatis 的基础上只做增强不做改变,为简化开发和提高效率而生。

MyBatis-Plus 提供了一种更为便捷的接口式编程方式,并封装了MyBatis 的常见操作,使得开发更为简单。

在MyBatis-Plus 中,分页功能可以通过`Page` 对象来实现。

以下是一个简单的例子:```java// 创建Page 对象Page<User> page = new Page<>(1, 10); // 第1页,每页显示10条// 设置查询条件page.add(new QueryWrapper<User>().eq("name", "old"));// 执行分页查询IPage<User> userPage = userMapper.selectPage(page, null);// 获取分页信息userPage.getMeta().setTotal(userMapper.selectCount(newQueryWrapper<User>().eq("name", "old")));// 获取数据列表List<User> userList = userPage.getRecords();```在这个例子中,我们首先创建了一个`Page` 对象,设置了要查询的页码和每页显示的条数。

然后,我们通过`QueryWrapper` 设置了查询条件。

接着,我们执行了分页查询,得到了一个`IPage` 对象。

最后,我们通过`IPage` 对象获取了分页信息和数据列表。

注意,这里的`userMapper` 是MyBatis-Plus 自动生成的Mapper 接口的实例。

如果你没有使用MyBatis-Plus 的自动生成功能,你需要自己创建Mapper 接口和实现类。

java 集合分页方法

java 集合分页方法

java 集合分页方法在Java中,可以使用集合(Collection)和分页技术来实现分页功能。

以下是一个简单的Java分页方法的示例:```javaimport ;import ;public class PaginationHelper<T> {private int pageSize;private int currentPage;private List<T> dataList;public PaginationHelper(int pageSize, int currentPage, List<T> dataList) {= pageSize;= currentPage;= dataList;}public List<T> getPageData() {int start = (currentPage - 1) pageSize;int end = start + pageSize;if (start < 0) {start = 0;}if (end > ()) {end = ();}if (start >= end) {return new ArrayList<>();} else {return (start, end);}}}```这个`PaginationHelper`类包含一个泛型类型`T`,表示要分页的数据类型。

构造函数接受三个参数:每页的大小、当前页码和数据列表。

`getPageData()`方法返回当前页的数据列表。

它首先计算起始和结束索引,然后使用`subList()`方法从数据列表中提取出当前页的数据。

如果起始索引小于0或大于数据列表的大小,则返回一个空列表。

使用示例:```javaList<String> dataList = new ArrayList<>();// 添加数据到dataList中...PaginationHelper<String> paginationHelper = new PaginationHelper<>(10, 1, dataList);List<String> pageData = ();```在这个示例中,我们创建了一个`PaginationHelper`对象,将每页大小设置为10,当前页码设置为1,并将数据列表传递给构造函数。

java 分页调用多个分页接口的方法

java 分页调用多个分页接口的方法

java 分页调用多个分页接口的方法在实际开发中,我们经常会遇到需要从多个接口获取数据并进行分页展示的情况。

例如,我们需要从接口A获取用户列表,从接口B 获取订单列表,然后将两个列表合并后进行分页展示。

下面,我们将介绍一种简单而高效的方法来实现这个需求。

我们需要定义一个通用的分页请求类,用于封装分页查询的参数,如当前页码、每页数量等。

例如,我们可以定义一个名为PageRequest的类:```javapublic class PageRequest {private int page;private int size;// 省略getter和setter方法}```接下来,我们可以定义一个通用的分页结果类,用于封装分页查询的结果,如数据列表、总记录数等。

例如,我们可以定义一个名为PageResult的类:```javapublic class PageResult<T> {private List<T> data;private int total;// 省略getter和setter方法}```接着,我们可以定义一个分页调用接口的通用方法,用于根据不同的分页请求参数调用不同的接口并返回分页结果。

例如,我们可以定义一个名为getPageData的方法:```javapublic PageResult<Object> getPageData(PageRequest pageRequest) {// 根据分页请求参数调用接口A获取用户列表List<Object> userList = apiA.getUserList(pageRequest.getPage(),pageRequest.getSize());// 根据分页请求参数调用接口B获取订单列表List<Object> orderList = apiB.getOrderList(pageRequest.getPage(), pageRequest.getSize());// 将两个列表合并List<Object> mergedList = new ArrayList<>();mergedList.addAll(userList);mergedList.addAll(orderList);// 对合并后的列表进行分页处理List<Object> pageData = new ArrayList<>();int startIndex = (pageRequest.getPage() - 1) * pageRequest.getSize();int endIndex = Math.min(startIndex + pageRequest.getSize(), mergedList.size());if (startIndex < endIndex) {pageData = mergedList.subList(startIndex, endIndex);}// 构建分页结果对象PageResult<Object> pageResult = new PageResult<>();pageResult.setData(pageData);pageResult.setT otal(mergedList.size());return pageResult;}```我们可以在业务逻辑中调用getPageData方法来获取分页数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java自定义分页标签实例一、标签处理类:还是采用继承自BodyTagSupport(其实继承自TageSupport也行),而没有采用SimpleTagSupport(?)package org.qiujy.tag;import java.io.IOException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.BodyTagSupport;/*** 自定义分页标签* 1.从表单中获得全部查询条件参数,生成对应的<inputtype=hidden>以备下次提交查询条件参数及值.*2.把当前页号(pageNo)设置成了请求参数,以便后台程序可以获得该值进行实时从数据数据库查询相应要显示的数据* 3.使用举例:* a) 后台程序:* //设置每页要显示的记录数,并保存到请求对象中(必须步骤)* int pageSize = 20;* request.setAttribute("pageSize",pageSize);* //获取当前页号(必须步骤)* String pageNo =request.getParameter("pageNo");* //利用这两参数进行数据查询...* b) 页面首先导入标签库: <%@ tagliburi="" prefix="q"%>* c) 页面使用标签: <q:pageTag recordCount="每页显示的记录数"gotoURI="要跳转到的目的地"/>** @author qiujy**/public class PageControllerTag extendsBodyTagSupport {/** 每页显示的记录数(标签的属性) */private int pageSize = 20;/** 目的地(标签的属性) */private String gotoURI;/** 总记录数名*/public static final String TOTAL = "total";/** 当前页号名*/public static final String PAGNENO = "pageNo"; /** 每页要显示的记录数名*/public static final String RECORDCOUNT = "pageSize";/** 目的地名*/public static final String GOTOURI = "gotoURI";//标签处理程序public int doStartTag() throws JspException {/** 当前页号(从请求对象中得到) */int pageNo = 1;/** 总记录数(从请求对象中得到) */int total = 0;/** 总页数(计算得出) */int totalPage = 1;HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();// 要输出到页面的HTML文本StringBuffer sb = new StringBuffer();sb.append("\r\n<form method='post' action='' ").append("name='pageController'>\r\n");// 获取所有提交的参数(包括查询条件参数) Enumeration enumeration =request.getParameterNames();String name = null;String value = null;while (enumeration.hasMoreElements()) {name = (String) enumeration.nextElement();value = request.getParameter(name);if (name.equals(RECORDCOUNT)) {continue;}// 从请求对象中获取要跳转到的页号if (name.equals(PAGNENO)) {if (null != value && !"".equals(value)) {pageNo = Integer.parseInt(value);System.out.println("from request pageNo====>"+ pageNo);}continue;}sb.append("<input type='hidden'name='").append(name).append("' value='").append(value).append("'/>\r\n");}//把当前页号设置成请求参数System.out.println("tag:pageNo=====>" + pageNo);sb.append("<input type='hidden'name='").append(PAGNENO).append("' value='").append(pageNo).append("'/>\r\n");// 从请求对象中获取总记录数String tot = (String)request.getAttribute(TOTAL);if (null != tot && !"".equals(tot)) {total = Integer.parseInt(tot);}//计算总页数totalPage = getTotalPage(total);System.out.println("total-->" + total);sb.append("<hr width='97%'/>\r\n");sb.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;\r\n");sb.append("总").append(totalPage).append(" 页,当前第").append(pageNo).append(" 页\r\n");sb.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;\r\n");if (pageNo == 1) {sb.append("首页");sb.append("&nbsp;");sb.append("上一页\r\n");} else {sb.append("<a href='#'onclick='turnOverPage(1)'>首页</a>\r\n");sb.append("&nbsp;");sb.append("<a href='#' onclick='turnOverPage(").append((pageNo -1)).append(")'>上一页</a>\r\n");}sb.append("&nbsp;");if (pageNo == totalPage) {sb.append("下一页");sb.append("&nbsp;");sb.append("尾页\r\n");} else {sb.append("<a href='#' onclick='turnOverPage(").append((pageNo +1)).append(")'>下一页</a>\r\n");sb.append("&nbsp;");sb.append("<a href='#' onclick='turnOverPage(") .append(totalPage).append(")'>尾页</a>\r\n"); }sb.append("&nbsp;");sb.append("跳到<selectonChange='turnOverPage(this.value)'>\r\n");for(int i = 1; i <= totalPage; i++){if(i == pageNo){sb.append(" <optionvalue='").append(i).append("' selected>第").append(i).append("页</option>\r\n");}else{sb.append(" <optionvalue='").append(i).append("'>第").append(i).append("页</option>\r\n");}}sb.append("</select>\r\n");// sb.append("<input type='text'name='").append(PAGNENO).append(// "' size='3' maxlength='3'/>\r\n");// sb.append("<input type='button'value='GO'").append(//"onclick='turnOverPage(pageNo.value)'/>\r\n"); sb.append("&nbsp;\r\n");sb.append("</form>\r\n");// 生成提交表单的JSsb.append("<script language='javascript'>\r\n"); sb.append(" function turnOverPage(no){\r\n"); sb.append(" var form =document.pageController;\r\n");sb.append(" //页号越界处理\r\n");sb.append("if(no").append(">").append(totalPage).append(") {\r\n");sb.append("no=").append(totalPage).append(";\r\n");sb.append(" }\r\n");sb.append(" if(no").append("<=0){\r\n"); sb.append(" no=1;\r\n");sb.append(" }\r\n");sb.append("form.").append(PAGNENO).append(".value=no;\r\n"); sb.append("form.action='").append(gotoURI).append("';\r\n"); sb.append(" form.submit();\r\n");sb.append(" }\r\n");sb.append("</script>\r\n");try {pageContext.getOut().println(sb.toString());} catch (IOException e) {e.printStackTrace();}return super.doStartTag();}public String getGotoURI() {return gotoURI;}public void setGotoURI(String gotoURI) {this.gotoURI = gotoURI;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}/*** 根据总记录数得到总页数** @return int 总页数*/private int getTotalPage(int total) {int totalPage = 1;if (total == 0) {totalPage = 1;} else {totalPage = (total % pageSize == 0) ? (total /pageSize): (total / pageSize + 1);}return totalPage;}}二、标签库描述文件:<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>0.9</tlib-version><short-name>myCustomerTag</short-name><uri></uri><tag><name>pageTag</name><tag-class>org.qiujy.tag.PageControllerTag</tag-class><body-content>scriptless</body-content><attribute><name>pageSize</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>gotoURI</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>三、页面使用:(由于是采用jsp2.0版本,所以不用在web.xml中声明tld文件了)<%@ page contentType="text/html; charset=utf-8" %><%@ taglib uri="WEB-INF/c.tld" prefix="c"%><%@ taglib uri="WEB-INF/fn.tld" prefix="fn"%><%@ taglib uri="WEB-INF/fmt.tld" prefix="fmt"%><%@ taglib uri="" prefix="q"%><html><head><title>博雅博客</title><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><link rel="StyleSheet" type="text/css"href="images/mystyle.css"></head><body><jsp:include flush="true"page="./templet/header.jsp"/><table border="1" width="900"bordercolor="#FCD447" align="center"><tr><td width="10%" valign="top"><!-- 导航栏开始--><table cellspacing="0" cellpadding="0"width="150" border="0"><tbody><tr><td><table cellspacing="0" cellpadding="0"width="150" border="0"><tbody><tr><td colspan="2" height="5"><img src="./images/default_icon.jpg"alt="logo" ></td></tr></tbody><tr><td><jsp:include flush="true"page="./templet/navigationbar.jsp"/></td></tr></table></td></tr></tbody></table><!-- 导航栏结束--></td><td width="90%" valign="top"><table width="100%"><tr><td><fontcolor="#FF0000"><b>查询关键字:&nbsp;&nbsp;相关文章篇</b></font></td></tr><c:forEach var="art" items="" end="9"><tr><td><table width="100%"><tr><td><b>*&nbsp;<ahref="articleDetail.do?id="class="a02"></a>&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;<fmt:formatDate value=""pattern="yyyy-MM-dd"/></b></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;<b>摘要:</b></td></tr></table></td></tr></c:forEach><tr><td><q:pageTag pageSize=""gotoURI="searchArticle.do"/></td></tr></table></td></table><jsp:include flush="true" page="./templet/footer.jsp" /> </body></html>。

相关文档
最新文档