https://github.com/llllllxy/tiny-mybatis-paginate
tiny-mybatis-paginate是一个MyBatis的辅助分页插件,基于MyBatis拦截器(Interceptor)开发的,使用简单,安全可靠,性能优异。
https://github.com/llllllxy/tiny-mybatis-paginate
mybatis page paginate pagination
Last synced: 3 months ago
JSON representation
tiny-mybatis-paginate是一个MyBatis的辅助分页插件,基于MyBatis拦截器(Interceptor)开发的,使用简单,安全可靠,性能优异。
- Host: GitHub
- URL: https://github.com/llllllxy/tiny-mybatis-paginate
- Owner: llllllxy
- License: apache-2.0
- Created: 2023-10-26T06:05:58.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2025-06-17T10:47:48.000Z (4 months ago)
- Last Synced: 2025-06-17T11:02:55.510Z (4 months ago)
- Topics: mybatis, page, paginate, pagination
- Language: Java
- Homepage:
- Size: 71.3 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
tiny-mybatis-paginate
## 1、简介
`tiny-mybatis-paginate`是一个`MyBatis`的辅助分页插件,基于`MyBatis`拦截器(Interceptor)开发的,使用简单,安全可靠,性能优异。## 2、支持的数据库
- **MySQL**
- **MariaDb**
- **ORACLE**
- **DB2**
- **PostgreSql**
- **Hsql**
- **sqlite**
- **DM**
- **sqlserver**
- **gauss**
- **gbase**
- **oceanbase**
- **highgo**
- **hana**
- **h2**
- **openGauss**
- **Derby**
- **oscar**## 2、快速开始
### 引入依赖
```xml
top.lxyccc
tiny-mybatis-paginate
1.1.0
```### 在传统的`Spring`项目内使用
##### 使用mybatis-config.xml 配置插件
如果项目中配置了`mybatis-config.xml`,则可以添加如下代码到配置中:
```
```
##### 使用application.xml 配置插件
如果不使用`mybatis-config.xml`配置文件配置插件,也可以通过`SqlSessionFactoryBean`的插件列表来完成集成,如下配置:
```
dialect=mysql
```
### 在`SpringBoot`项目内使用
在项目中增加`MybatisInterceptorConfig`配置类即可,代码如下:
```java
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.tinycloud.paginate.MyBatisPaginateInterceptor;import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Properties;@Configuration
public class MybatisInterceptorConfig {
@Autowired
private List sqlSessionFactoryList;// 只执行一次
@PostConstruct
public void addDefaultTimeInterceptor() {
// Mybatis分页拦截器
MyBatisPaginateInterceptor pageInterceptor = new MyBatisPaginateInterceptor();
Properties pageProperties = new Properties();
/*
* 配置数据库方言,不配置的话会根据jdbcUrl自动适配(不支持自动选择sqlserver2012,只能使用sqlserver)
*/
pageProperties.setProperty("dialect", "mysql");
pageInterceptor.setProperties(pageProperties);for (SqlSessionFactory sqlSessionFactory : sqlSessionFactoryList) {
org.apache.ibatis.session.Configuration configuration = sqlSessionFactory.getConfiguration();// 最后添加的会更早执行
configuration.addInterceptor(pageInterceptor);
}
}
}
```## 3、使用方法
```java
// pageNumber pageSize模式
Page page = PaginateRequest.of(1, 10).request(() -> loginLogMapper.pageList(param));或者
// offset limit模式
Page page = PaginateRequest.in(0, 10).request(() -> loginLogMapper.pageList(param));
```- `of` 配置分页的`当前页码`以及`每页条数`
- `in` 配置分页的`偏移量`以及`每页条数`
- `request` 该方法需要传递一个业务逻辑方法,也就是你需要执行分页的方法#### Page对象内容
- `records` 分页后的数据列表,具体的返回值可以使用`Page`泛型接收
- `pages` 总页数
- `total` 总记录数
- `pageNum` 当前页码
- `pageSize` 每页条数
- `hasNextPage` 是否存在下一页,`true`:存在,`false`:不存在
- `hasPreviousPage` 是否存在上一页,`true`:存在,`false`:不存在
- `firstPage` 是否为首页,`true`:首页,`false`:非首页
- `lastPage` 是否为末页,`true`:末页,`false`:非末页