MyBatis-Plus的分页功能

MyBatis-Plus的分页功能,第1张

MyBatis-Plus的分页功能(快速上手)
    • 1. 编写前端页面pagin.html(主要是编写一个表格来进行分页)
      • 示例代码:
    • 2.使用Mybatis-Plus方式编写 dao层 和 service层
      • 示例代码:
        • dao:(UserMapper.java)
        • service:(UserService.java & UserServiceImpl.java)
    • 3. Controller中获取数据库中的数据并转发到前端页面
      • 示例代码:
        • controller:(UserController.java)
    • 4.使用thymeleaf来进行页面渲染
      • 示例代码:
    • 5.编写拦截器然后注入到SpringBoot容器中
    • 6.展示最终结果

分页功能:就是将后端得到的数据通过分页的形式展示给前端(页面)。

此处使用:

  • 框架:SpringBoot2.6.6
  • 模板引擎:thymeleaf(SpringBoot版本仲裁)
1. 编写前端页面pagin.html(主要是编写一个表格来进行分页)

示例代码:
<table border="1px" width="500px" height="200px" >
        <thead>
        <tr>
            <th>idth>
            <th>用户名th>
            <th>ageth>
            <th>emailth>
        tr>
        thead>
        <tbody>
        <tr >
            <td>12td>
            <td>毛哥td>
            <td>18td>
            <td>[email protected]td>
        tr>
        <tr >
            <td>12td>
            <td>毛哥td>
            <td>18td>
            <td>[email protected]td>
        tr>
        <tr >
            <td>12td>
            <td>毛哥td>
            <td>18td>
            <td>[email protected]td>
        tr>
        tbody>
    table>
    <div width="500px" >当前第 1 页 总计 10 页 共 10 条记录   
        <span>首页span>
        <span>1span>
        <span>2span>
        <span>3span>
        <span>尾页span>
    div>
2.使用Mybatis-Plus方式编写 dao层 和 service层 示例代码: dao:(UserMapper.java)
@Mapper
	public interface UserMapper extends BaseMapper<User> {
	}
service:(UserService.java & UserServiceImpl.java)
  • UserService.java(接口)

    public interface UserService extends IService<User> {
    
    }
    
  • UserServiceImpl.java(实现类)

    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    
    }
    
3. Controller中获取数据库中的数据并转发到前端页面 示例代码: controller:(UserController.java)
@GetMapping("/paging")
    public String pagin(@RequestParam(value = "pn",defaultValue = "1")Integer pn, Model model){
        Page<User> userPage = new Page<>(pn,2);
        Page<User> page = userService.page(userPage, null);
        model.addAttribute("page", page);
        return "pagin";
    }

这里要详细的解说一下:

userService.page方法是分页查出数据,方法中有两个参数:
	- @param page(翻页对象),继承于IPape
		Page对象也有两个参数:
			- @param current 当前页
			- @param size 每页显示条数
	- @param queryWrapper (实体对象封装 *** 作类):查询的条件封装对象

Page page = userService.page(userPage, null) 得到了分页查询的结果

通过得到的结果的page对象,

  • page.getPages():得到总页码
  • page.getCurrent:获取当前页码
  • page.getRecords:获取所有记录(也就是对象集,我们需要的数据列表)
  • page.getTotal:得到数据的总数
    …还有很多的方法,可以去Mybatis-Plus官网查看

所有最后只需要把数据放入model中,就能通过thymeleaf模板引擎去页面获取!!!

4.使用thymeleaf来进行页面渲染 示例代码:
<table border="1px" width="500px" height="200px" >
        <thead>
        <tr>
            <th>idth>
            <th>用户名th>
            <th>ageth>
            <th>emailth>
        tr>
        thead>
        <tbody>
        <tr th:each="user:${page.records}">
            <td th:text="${user.id}">td>
            <td th:text="${user.name}">毛哥td>
            <td th:text="${user.age}">18td>
            <td th:text="${user.email}">[email protected]td>
        tr>
        tbody>
    table>
    <div width="500px" >当前第 [[${page.current}]] 页 总计 [[${page.pages}]] 页 共 [[${page.total}]] 条记录   
        <a th:href="@{/paging(pn=1)}">首页a>  
        <span th:each="num:${#numbers.sequence(1,page.pages)}"><a th:href="@{/paging(pn=${num})}">[[${num}]]    a>span>

        <a th:href="@{/paging(pn=${page.pages})}">尾页a>
    div>
5.编写拦截器然后注入到SpringBoot容器中

写一个配置类,然后把MybatisPlusInterceptor通过@Bean注入到SpringBoot容器中:

/**
     * MybatisPlusInterceptor
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //这是分页拦截器
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
//        设置请求页面大于最大页后 *** 作,true调回到首页,false继续请求,默认false
        paginationInnerInterceptor.setOverflow(true);
//        设置最大单页限制数量,默认500条,-1不受限制
        paginationInnerInterceptor.setMaxLimit(500l);

        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }
6.展示最终结果

Mybatis-Plus分页功能展示

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/759047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存