zoukankan      html  css  js  c++  java
  • Mybatis分页插件

    1.分页插件的方案?

    可以使用mybatis的拦截器机制,在SQL执行前做一个拦截,然后对SQL语句加上limit ,这样所有需要分页的SQL就自动实现分页逻辑了。

    2,拦截器实现分页的原理图:

    对于以上原理图,主要就是基于拦截器机制,在执行sql语句之前,进行拦截,在你需要查询的语句前,加上limit ?,?

    3.案例

    需求:客户端传来两个参数:page,rows,实现分页

    返回的是数据的总数和查询的数据

    1)请求路径:  GET请求

    2)请求参数:page(当前页码),rows(每页条数)

    3)响应结果:必须包含两个内容:总条数xx.getTotal()  ,数据集合xx.getList()

     3.1添加依赖

        <!-- 分页助手 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>3.7.5</version>
            </dependency>
            <dependency>
                <groupId>com.github.jsqlparser</groupId>
                <artifactId>jsqlparser</artifactId>
                <version>0.9.1</version>
            </dependency>

    3.2定义Mybatis核心配置文件添加插件

        <plugins>
            <!-- 配置分页助手的插件 -->
            <plugin interceptor="com.github.pagehelper.PageHelper">
                <!-- 指定数据库方言 -->
                <property name="dialect" value="mysql"/>
                <!-- 设置为true时,查询结果中会查询出总条数信息 -->
                <property name="rowBoundsWithCount" value="true"/>
            </plugin>
        </plugins>

    3.3定义controller类

    /*
         * 关于分页的参数 :
         * 异步
         * 有参page,rows
         * 有返回值List<User>,total
         * */
        
        @RequestMapping(value="list",method=RequestMethod.POST)
        public ResponseEntity<PageResult> queryUserList(@RequestParam("page")Integer page,@RequestParam("rows")Integer rows){
            
            try {
                PageInfo<User> pageInfo = userService.queryUserList(page, rows);
                
                PageResult pageResult = new PageResult(pageInfo.getList(),pageInfo.getTotal());
                
                return ResponseEntity.status(HttpStatus.OK).body(pageResult);
            } catch (Exception e) {
                e.printStackTrace();
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
            }
        }

    3.4.调用service层

    @Service
    public class UserServiceImpl implements UserService{
    
        @Autowired
        private UserMapper userMapper;
    
        @Override
        public PageInfo<User> queryUserList(Integer page, Integer rows) {
    
            PageHelper.startPage(page, rows);
            
            List<User> list = this.userMapper.select(null);
            
            PageInfo<User> pageInfo = new PageInfo<User>(list);
            
            return pageInfo;
        }

    3.5,因为单表的操作,这里使用通用Mapper类。调用dao

    编写接口继承Mapper即可

  • 相关阅读:
    Ios8代码关闭输入预测问题
    iOS10 拍照崩溃问题
    iOS 圆的放大动画效果
    12-指针
    11-数组、字符串
    09-函数
    iOS 动画
    iOS 传值 委托(delegate)和block 对比
    IOS Table中Cell的重用reuse机制分析
    IOS 网络请求
  • 原文地址:https://www.cnblogs.com/lichangyun/p/8542307.html
Copyright © 2011-2022 走看看