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;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SSM使用PageHelper实现分页非常简单。首先,你需要在项目的pom.xml文件引入PageHelper的依赖。然后,在你的Mapper接口添加对应的方法,并在该方法上添加PageHelper的分页注解。最后,你可以在Service层或Controller层调用该方法并传入分页参数,即可实现分页。下面是一个示例代码: 1. 首先,在pom.xml文件引入PageHelper的依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency> ``` 2. 在Mapper接口添加分页方法,并使用PageHelper的注解进行分页配置: ```java import com.github.pagehelper.Page; import org.apache.ibatis.annotations.Param; public interface YourMapper { // 使用PageHelper的注解进行分页配置 List<YourEntity> getYourList(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize); } ``` 3. 在Service层或Controller层调用分页方法并传入分页参数: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @Service public class YourService { @Autowired private YourMapper yourMapper; public PageInfo<YourEntity> getYourList(int pageNum, int pageSize) { // 设置分页参数 PageHelper.startPage(pageNum, pageSize); // 调用Mapper方法查询数据 List<YourEntity> list = yourMapper.getYourList(pageNum, pageSize); // 封装成PageInfo对象返回 PageInfo<YourEntity> pageInfo = new PageInfo<>(list); return pageInfo; } } ``` 通过以上三个步骤,你就可以在SSM使用PageHelper实现分页了。首先,在pom.xml文件引入PageHelper的依赖,然后在Mapper接口添加分页方法并使用PageHelper的注解进行分页配置,最后在Service层或Controller层调用分页方法并传入分页参数,即可实现分页。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【分页查询】在SSM环境使用PageHelper](https://blog.csdn.net/weixin_44757863/article/details/109728886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SSM整合实例--(二)PageHelper分页操作](https://blog.csdn.net/Double____C/article/details/91048168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值