zoukankan      html  css  js  c++  java
  • Mybatis插件 Mybatis-PageHelper简单使用

    Mybatis插件 Mybatis-PageHelper

    gitee中使用方法介绍

    https://gitee.com/caomj_github/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

    在 pom.xml 中添加如下依赖:

    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
    </dependency>
    <dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.2</version>
    </dependency>
    
    对应mybatis插件版本
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.5</version>
    </dependency>
    

    在 MyBatis 配置 xml 中配置拦截器插件

    <plugins>
        <!-- com.github.pagehelper.PageHelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 4.0.0以后版本可以不设置该参数 -->
            <!--<property name="dialect" value="mysql"/>-->
            <!-- 该参数默认为false -->
            <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
            <!-- 和startPage中的pageNum效果一样-->
            <property name="offsetAsPageNum" value="true"/>
            <!-- 该参数默认为false -->
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true"/>
            <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
            <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
            <property name="pageSizeZero" value="true"/>
            <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
            <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
            <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
            <property name="reasonable" value="true"/>
            <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
            <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
            <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
            <!-- 不理解该含义的前提下,不要随便复制该配置 -->
            <!--<property name="params" value="pageNum=start;pageSize=limit;"/>-->
            <!-- 支持通过Mapper接口参数来传递分页参数 -->
            <!--<property name="supportMethodsArguments" value="true"/>-->
            <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
            <!--<property name="returnPageInfo" value="check"/>-->
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true"/>
        </plugin>
    </plugins>
    ————————————————
    版权声明:本文为CSDN博主「zhuliliang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhuliliang/article/details/73650782
    

    上面配置是4.2版本前的,分页插件 5.0 版本和 4.2.x 实现完全不同所以会报错误

    java.lang.ClassCastException: com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.p
    

    5.0 是用这个类 !!!

    com.github.pagehelper.PageInterceptor
    

    因为PageHelper类,继承Interceptor

    public class PageHelper extends PageMethod implements Dialect
    ————————————————
    版权声明:本文为CSDN博主「zhuliliang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhuliliang/article/details/73650782

    编写接口

    public interface UserMapper {
        List<User> getUserList();
    }
    

    编写mapper映射

    <?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.fb.dao.UserMapper">
        <!--id与接口中方法名字一致-->
        <!--<select id="getUserList" resultType="com.fb.model.User">-->
        <!--用别名代替-->
        <!--<select id="getUserList" resultType="user">
          select * from test.user
        </select>-->
    </mapper>
    

    单元测试

    @Test
        public void testMybatisPageHelper01(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            com.github.pagehelper.Page<Object> page = PageHelper.startPage(1, 3);
            List<User> userList = mapper.getUserList();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    
  • 相关阅读:
    全景拼接
    krpano之字幕添加
    UML之时序图
    krpano之语音介绍
    小工具之录音(文字转语音)
    动态生成按钮的点击事件绑定
    登录之简单验证码
    登录之md5加密
    redis与mysql数据同步
    Sql Server 主从数据库配置
  • 原文地址:https://www.cnblogs.com/fb010001/p/14528881.html
Copyright © 2011-2022 走看看