开源软件名称:mybatis-pageable
开源软件地址:https://gitee.com/hengboy/mybatis-pageable
开源软件介绍:
欢迎使用自动化分页插件
欢迎关注公众号关注微信公众号,回复加群 ,获取交流群群号。 MyBatis-Pageable 是一款自动化分页的插件,基于MyBatis 内部的插件Interceptor 拦截器编写完成,拦截Executor.query 的两个重载方法计算出分页的信息以及根据配置的数据库Dialect 自动执行不同的查询语句完成总数量的统计。
支持的数据库MyBatis-Pageable 目前支持的主流数据库:
- DB2
- Derby
- DM、
- H2、
- HSQL、
- InforMix、
- Mariadb、
- MySQL、
- Oracle、
- Postgres、
- SqlLite、
- SqlServer2000以上版本
快速开始MyBatis-Pageable 可以在传统的Spring 项目内使用,也可以在最新SpringBoot 项目内使用。
SpringBoot集成MyBatis-Pageable 目前已经上传到Maven 中央仓库,你可以随时配置依赖使用,如果你是Maven 管理的项目,复制如下代码到你的pom.xml 配置文件内:
<dependency> <groupId>com.gitee.hengboy</groupId> <artifactId>spring-boot-starter-mybatis-pageable</artifactId> <version>{lastVersion}</version> </dependency> 如果你使用的Gradle 管理的项目,那么你需要复制如下的代码到你们的build.gradle 文件内: compile 'com.gitee.hengboy:mybatis-pageable:{lastVersion}' 注意:上面内容需要把{lastVersion} 改成目前最新版本的MyBatis-Pageable 版本号
配置插件添加完成 starter 依赖后,你可以在配置文件application.yml 或者application.properties 内完成配置,下面是yml 格式配置: hengboy: pageable: dialect: mysql 在使用pageable 时你仅仅需要配置一个数据库方言,如果你使用MySQL 或者MariaDB 数据库你可以不配置数据库方言。 传统Spring集成使用mybatis-config.xml 配置插件如果你项目中配置使用了mybatis-config.xml ,那么你需要添加如下代码到你的配置文件: <plugins> <plugin interceptor="com.gitee.hengboy.mybatis.pageable.interceptor.MyBatisExecutePageableInterceptor"> <!-- 配置数据库方言 --> <property name="dialect" value="mysql"/> </plugin></plugins> 使用application.xml 配置插件当然你如果不使用mybatis-config.xml 配置文件配置插件,也可以通过SqlSessionFactoryBean 的插件列表来完成集成MyBatis-Pageable ,如下配置: <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 配置插件列表 --> <property name="plugins"> <array> <bean class="com.gitee.hengboy.mybatis.pageable.interceptor.MyBatisExecutePageableInterceptor"> <property name="properties"> <!-- 配置数据库方言 --> <value> dialect=mysql </value> </property> </bean> </array> </property></bean> 怎么使用?目前MyBatis-Pageable 使用比较简单,有一个分页请求类PageableRequest 来完成自动分页操作,我们来看个简单的示例: Page<UserEntity> page = PageableRequest.of(1, 5).request(() -> userMapper.selectAll()); of 配置分页的当前页码 以及每页的限制条数 request 该方法需要传递一个业务逻辑方法,也就是你需要执行分页的方法
Page对象详解在上面简单的一行代码就可以完成自动分页以及读取出分页相关的信息,分页执行后我们通过Page 对象都可以获取到什么内容呢? data 分页后的数据列表,具体的返回值可以使用Page<T> 泛型接收totalPages 总页数totalElements 总条数pageIndex 当前页码pageSize 每页限制条数offset 分页开始位置endRow 分页结束位置hasNext 是否存在下一页,true :存在,false :不存在hasPrevious 是否存在上一页,true :存在,false :不存在isFirst 是否为首页,true :首页,false :非首页isLast 是否为末页,true :末页,false :非末页
翻页查询实际开发过程中存在这种情况,虽然传递的分页页码为1 ,但是种种判断过后我需要查询上一页 或者下一页 、首页 的数据,这时候你就可以PageableRequest 对象的next() 、previous() 、first() 方法来处理这种事情的发生,如下示例: Pageable pageable = PageableRequest.of(2, 10); if (xx = xx) { pageable.next(); } Page<UserEntity> page = pageable.request(()->userMapper.selectAll()); 上面是翻页到下一页 的查询示例,当然这个功能是为了尽可能的方便分页的使用,同样的previous() 、first() 方法都可以这么使用。 |
请发表评论