tiny-mybatis-paginate
是一个MyBatis
的辅助分页插件,基于MyBatis
拦截器(Interceptor)开发的,使用简单,安全可靠,性能优异。
- MySQL
- MariaDb
- ORACLE
- DB2
- PostgreSql
- Hsql
- sqlite
- DM
- sqlserver
- gauss
- gbase
- oceanbase
- highgo
- hana
- h2
- openGauss
- Derby
- oscar
<dependency>
<groupId>top.lxyccc</groupId>
<artifactId>tiny-mybatis-paginate</artifactId>
<version>1.1.0</version>
</dependency>
如果项目中配置了mybatis-config.xml
,则可以添加如下代码到配置中:
<plugins>
<plugin interceptor="org.tinycloud.paginate.MyBatisPaginateInterceptor">
<!-- 配置数据库方言,不配置的话会根据jdbcUrl自动适配 -->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
如果不使用mybatis-config.xml
配置文件配置插件,也可以通过SqlSessionFactoryBean
的插件列表来完成集成,如下配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 配置插件列表 -->
<property name="plugins">
<array>
<bean class="org.tinycloud.paginate.MyBatisPaginateInterceptor">
<property name="properties">
<!-- 配置数据库方言,不配置的话会根据jdbcUrl自动适配 -->
<value>
dialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
在项目中增加MybatisInterceptorConfig
配置类即可,代码如下:
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<SqlSessionFactory> 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);
}
}
}
// pageNumber pageSize模式
Page<SysLoginLog> page = PaginateRequest.of(1, 10).request(() -> loginLogMapper.pageList(param));
或者
// offset limit模式
Page<SysLoginLog> page = PaginateRequest.in(0, 10).request(() -> loginLogMapper.pageList(param));
of
配置分页的当前页码
以及每页条数
in
配置分页的偏移量
以及每页条数
request
该方法需要传递一个业务逻辑方法,也就是你需要执行分页的方法
records
分页后的数据列表,具体的返回值可以使用Page<T>
泛型接收pages
总页数total
总记录数pageNum
当前页码pageSize
每页条数hasNextPage
是否存在下一页,true
:存在,false
:不存在hasPreviousPage
是否存在上一页,true
:存在,false
:不存在firstPage
是否为首页,true
:首页,false
:非首页lastPage
是否为末页,true
:末页,false
:非末页