ssm中pageHelper的使用

本文介绍在SSM框架中使用PageHelper实现分页功能的方法。包括添加依赖、配置分页插件、编写控制器和服务层代码等步骤,并展示了如何在前端页面展示分页信息。

ssm中pageHelper的使用

1.首先导入PageHelper依赖

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

2.在spring与mybatis的整合配置文件中sqlSessionFactoryBean,添加配置

 <bean id="SqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <property name="plugins">
            <set>
                <!--配置pageHelper 分页插件-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <!--方言:-->
                            <prop key="helperDialect">mysql</prop>
                        </props>
                    </property>
                </bean>
            </set>
        </property>
</bean>

3.在想要查询的方法上使用

  • 一定要在查询方法的前一步使用PageHelper.startPage(首页,页面大小)
  • 想要使用页面的信息时使用pageInfo
  • PageInfo<实体类> pageInfo = new PageInfo<>(数据库中获取到的信息)
  • 传给前台
  • 在mybatis中不用写limit

controller

@RequestMapping("/productByCategory")
    public String productByCategory(@RequestParam(defaultValue = "1") int pageIndex, String category, Model model){
        
        PageHelper.startPage(pageIndex,1);
        List<Product> products = productService.selectByCategory(category);
        PageInfo<Product> pageInfo = new PageInfo<>(products);

        model.addAttribute("products",products);
        model.addAttribute("pageInfo",pageInfo);
        model.addAttribute("category",category);
        return "/client/product_list.jsp";
    }

service

List<Product> selectByCategory(String category);
 @Override
    public List<Product> selectByCategory(String category) {

        return productDao.selectByCategory(category);
    }

dao

List<Product> selectByCategory(@Param("category") String category);
<select id="selectByCategory" resultType="Product">
        select * from products
        <where>
            <if test="category!=null and category!=''">
                category = #{category}
            </if>
        </where>
</select>

前台页面

<c:if test="${pageInfo.pageNum!=1}">
	<li class="nextPage">
	<a href="${pageContext.request.contextPath}/client/product/productByCategory?pageIndex=${pageInfo.pageNum-1}&category=${category}">&lt;&lt;上一页</a>
	</li>
</c:if>
<c:if test="${pageInfo.pageNum==1}">
	<li class="disablepage">&lt;&lt;上一页</li>
</c:if>
<c:forEach begin="1" end="${pageInfo.pages}" var="pageNum">

	<c:if test="${pageNum==pageInfo.pageNum}">
		<li class="currentpage">${pageNum }</li>
	</c:if>
	<c:if test="${pageNum!=pageInfo.pageNum}">
		<li><a href="${pageContext.request.contextPath}/client/product/productByCategory?pageIndex=${pageNum}&category=${category}">${pageNum}</a>
		</li>
	</c:if>

</c:forEach>

	<c:if test="${pageInfo.pageNum==pageInfo.pages||pageInfo.pages==0}">
		<li class="disablepage">下一页 &gt;&gt;</li>
	</c:if>

	<c:if test="${pageInfo.pageNum!=pageInfo.pages&&pageInfo.pages!=0}">
		<li class="nextpage">
	<a href="${pageContext.request.contextPath}/client/product/productByCategory?pageIndex=${pageInfo.pageNum+1}&category=${category}">下一页&gt;&gt;</a>
		</li>
	</c:if>

pageInfo里的内容

public class PageInfo<T> implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值