MyBatis 分页插件 PageHelper

链接: PageHelper官网.
分页插件支持任何复杂的单表、多表分页;


分页结果(结合了一点BootStrap):
在这里插入图片描述

My Environment

  • IDEA2018.3
  • JDK1.8
  • SpringBoot2.3.0
  • 360浏览器

Springboot整合PageHelper插件

1. pom.xml引入PageHelper依赖

<!--引入pagehelper分页插件--> 
        <dependency> 
            <groupId>com.github.pagehelper</groupId> 
            <artifactId>pagehelper-spring-boot-starter</artifactId> 
            <version>1.2.10</version> 
        </dependency> 

2. 配置application.properties/application.yml

application.properties:

# pagehelper分页插件配置 
pagehelper.helperDialect=mysql 
pagehelper.reasonable=true 
pagehelper.supportMethodsArguments=true 
pagehelper.params=count=countSql 

application.yml:

# pagehelper分页插件配置 
pagehelper: 
  helperDialect: mysql 
  reasonable: true  
  supportMethodsArguments: true  
  pageSizeZero: false #pageSize=0  

有关分页插件的基本配置就完成了(当然其他必要的基本配置也需要提前配置好);
也可以直接参考官网链接: 使用文档.


SpringBoot结合Thymeleaf实现分页

首先我们需要写一个查询数据库然后展示到前端界面的各层代码:
Entity类:

package com.cjw.entity; 
 
import lombok.AllArgsConstructor; 
import lombok.NoArgsConstructor; 
import lombok.ToString; 
import lombok.Data; 
import lombok.experimental.Accessors; 
 
import java.util.Date; 
 
 
@Data 
@ToString 
@AllArgsConstructor 
@NoArgsConstructor 
@Accessors(chain = true) //链式调用 
public class Emp {
    
 
    private String id; 
    private String name; 
    private Double salary; 
    private Integer age; 
    private Date bir; 
 
} 

Dao层接口:

package com.cjw.dao; 
 
import com.cjw.entity.Emp; 
import org.springframework.stereotype.Repository; 
 
 
import java.util.List; 
 
@Repository 
public interface EmpDao {
    
 
    List<Emp> findAll(); 
} 

数据库Mapper.xml文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper 
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="com.cjw.dao.EmpDao"> 
 
    <!--查询所有--> 
    <select id="findAll" resultType="Emp"> 
        select id,name,salary,age,bir from t_emp 
    </select> 
</mapper> 

服务层及其实现层:

package com.cjw.service; 
 
import com.cjw.entity.Emp; 
import java.util.List; 
 
public interface EmpService {
    
 
    List<Emp> findAll(); 
} 
package com.cjw.service.Impl; 
 
import com.cjw.dao.EmpDao; 
import com.cjw.entity.Emp; 
import com.cjw.service.EmpService; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
 
 
import java.util.List; 
import java.util.UUID; 
 
@Service 
public class EmpServiceImpl implements EmpService {
    
 
    @Autowired 
    private EmpDao empDao; 
 
    @Override 
    public List<Emp> findAll() {
    
        return empDao.findAll(); 
    } 
} 

然后只需要在控制层中使用分页插件进行替换,并用model返回至前端:
控制层:

@Controller 
public class EmpController {
    
 
 
    @Autowired 
    private EmpService empService; 
 
    @GetMapping("emp/findAll") 
    public String findAll(@RequestParam(defaultValue = "1") int pageNum, 
                          @RequestParam(defaultValue = "5") int pageSize, 
                          Model model){
    
        PageHelper.startPage(pageNum,pageSize);//关键 
        PageInfo<Emp> pageInfo = new PageInfo<>(empService.findAll()); 
        model.addAttribute("pageInfo",pageInfo); 
//        List<Emp> emps = empService.findAll(); 
//        model.addAttribute("emps",emps); 
        return "ems/emplist"; 
 
    } 

前端Html:

<table class="table"> 
						<tr class="table_header"> 
							<td> 
								ID 
							</td> 
							<td> 
								用户名 
							</td> 
							<td> 
								收入 
							</td> 
							<td> 
								年龄 
							</td> 
							<td> 
								生日 
							</td> 
							<td> 
								操作 
							</td> 
						</tr> 
<tr th:class="${rowstate.odd}?'row1':'row2'" th:each="emp,rowstate:${pageInfo.list}"  > 
							<td> 
								<span th:text="${emp.id}"></span> 
							</td> 
							<td> 
								<span th:text="${emp.name}"></span> 
							</td> 
							<td> 
								<span th:text="${emp.salary}"></span> 
							</td> 
							<td> 
								<span th:text="${emp.age}"></span> 
							</td> 
							<td> 
								<span th:text="${#dates.format(emp.bir,'yyyy-MM-dd')}"></span> 
							</td> 
							<td> 
								<!--<a th:href="@{/toSave}">新增</a>&nbsp;--> 
								<a th:href="@{/emp/update(id=${emp.id})}">更改</a>&nbsp; 
								<a th:href="@{/emp/delete(id=${emp.id})}">删除</a> 
 
							</td> 
						</tr> 
					</table> 

分页部分:

<div class="modal-footer no-margin-top"> 
					<ul class="pagination pagination-lg"> 
						<li class="page-item"><a class="page-link"><span>当前页为:</span><span th:text="第+${pageInfo.pageNum}+页"></span></a></li> 
						<!--<li class="page-item"><a class="page-link" th:href="@{/emp/findAll}">首页</a></li>--> 
 
						<li><a th:href="@{/emp/findAll?pageNum=0}">首页</a></li> 
						<li class="page-item"><a class="page-link" th:href="@{/emp/findAll(pageNum=1)}">1</a></li> 
						<li class="page-item"><a class="page-link" th:href="@{/emp/findAll(pageNum=2)}">2</a></li> 
						<li class="page-item"><a class="page-link" th:href="@{/emp/findAll(pageNum=3)}">3</a></li> 
						<li class="page-item"><a class="page-link" th:href="@{/emp/findAll(pageNum=${pageInfo.getNextPage()})}">下一页</a></li> 
						<li class="page-item"><a class="page-link"><span th:text="共+${pageInfo.pageSize}+页"></span></a></li> 
					</ul> 
					</div> 

END


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

SpringBoot项目热部署生效方法知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。