PageHelper+mybatis plus
时间: 2023-10-02 15:13:55 浏览: 122
PageHelper是一个用于实现分页功能的开源工具,在MyBatis中使用非常广泛。它可以通过拦截器的方式,自动对MyBatis的查询进行分页处理。而MyBatis Plus是基于MyBatis的增强工具,提供了更加便捷的CRUD操作和通用的分页查询功能。
一般情况下,使用PageHelper时需要传递分页参数(pageNo和pageSize),这样PageHelper会先查询符合条件的总数,然后再执行分页查询。如果没有传递分页参数,则会直接执行普通的查询操作。
相关问题
springboot分页pagehelper+mybatis plus实现分页示例代码
Spring Boot是一个能够极大简化Spring应用开发的框架,而PageHelper是MyBatis的分页插件,而MyBatis Plus则是MyBatis的增强工具包。SpringBoot整合PageHelper和MyBatis Plus可以简化分页操作,示例代码如下:
1.首先,在pom.xml文件中添加PageHelper和MyBatis Plus的依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>最新版本号</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本号</version>
</dependency>
```
2.配置MyBatis Plus的分页插件
```java
@Configuration
public class MybatisPlusConfig {
@Autowired
private DataSource dataSource;
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
sqlSessionFactory.setPlugins(new Interceptor[]{paginationInterceptor()}); //添加分页插件
return sqlSessionFactory.getObject();
}
}
```
3.使用PageHelper的分页接口进行分页
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> findUserList(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.selectList(null);
PageInfo<User> pageInfo = new PageInfo<>(userList);
return pageInfo.toPageInfo();
}
}
```
4.使用MyBatis Plus的分页接口进行分页
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> findUserList(Integer pageNum, Integer pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectPage(page, null);
}
}
```
以上便是使用Spring Boot整合PageHelper和MyBatis Plus进行分页的示例代码。
pagehelper和mybatis-plus分页性能
PageHelper 和 MyBatis-Plus 都是用于实现 MyBatis 分页的工具,它们的性能表现也有所不同。
PageHelper 是一款开源的 MyBatis 分页插件,它采用了物理分页的方式,即在 SQL 执行前添加 limit 和 offset 限制查询结果的数量,但是它需要先查询出总记录数,因此会增加一次查询的开销。PageHelper 通过拦截 Executor 的 query 方法实现分页,由于是拦截器,因此需要在 MyBatis 的配置文件中进行配置。在处理大量数据时,由于需要先查询总记录数,因此 PageHelper 性能会有所下降。
MyBatis-Plus 也是一款开源的 MyBatis 增强工具,它提供了一种基于物理分页的方式和一种基于逻辑分页的方式。
- 基于物理分页的方式:和 PageHelper 一样,需要先查询总记录数,然后再进行物理分页。在处理大量数据时,性能表现与 PageHelper 相似。
- 基于逻辑分页的方式:通过拦截 Executor 的 query 方法,在 SQL 执行后进行结果集的截取,不需要先查询总记录数,因此性能更高。但是该方式需要对 SQL 进行改写,因此对于复杂的 SQL 语句可能不太友好。
综上所述,MyBatis-Plus 基于逻辑分页的方式性能更高,但是对于复杂的 SQL 语句可能需要进行额外的改写。而 PageHelper 的性能在处理大量数据时可能稍微差一些,但是对于普通的 SQL 语句来说,使用起来更加方便简单。
阅读全文