亲测好用!分享数据分页(pageHelper/Mybatis-Plus)的两种方法

2,834 阅读2分钟

第一种实现方式(PageHelper):

PageHelper是一个用于对MyBatis进行分页的开源插件,它可以非常方便地为MyBatis提供分页功能。以下是PageHelper的用法:

1.添加依赖 在Maven项目中,可以通过以下方式来添加PageHelper的依赖:

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.2.0</version>
</dependency>

2.配置插件 在MyBatis的配置文件中,可以通过以下方式来配置PageHelper插件:

<plugins>
   <plugin interceptor="com.github.pagehelper.PageInterceptor">
     <property name="dialect" value="mysql"/>
   </plugin>
</plugins>

其中,dialect属性用来指定数据库类型。

3.在代码中使用 在需要分页的方法中,可以使用PageHelper来实现分页功能,具体步骤如下:

(1)在调用方法前调用PageHelper.startPage方法,设置分页相关参数,如当前页码、每页记录数等信息:

#注意这段代码一定要放在sql语句正上方,否则会失效
PageHelper.startPage(1, 10);

(2)调用方法获取分页数据:

List<User> userList = userDao.selectAll();

(3)调用PageInfo对象的相关方法获取分页信息,如当前页码、总记录数等:

PageInfo<User> pageInfo = new PageInfo<User>(userList);
System.out.println("当前页码:" + pageInfo.getPageNum());
System.out.println("每页记录数:" + pageInfo.getPageSize());
System.out.println("总记录数:" + pageInfo.getTotal());

以上就是PageHelper的用法,通过简单的配置和调用,就可以实现MyBatis的分页功能。

第二种实现方式(使用Mabatis-Plus)

MyBatis-Plus是一个基于MyBatis的增强工具,提供了快速便捷的增删改查、分页、主键生成、条件构造器等功能,今天我们来详细介绍如何使用MyBatis-Plus实现分页。

1.添加依赖 在Maven项目中,需要在pom.xml文件中添加MyBatis-Plus和MyBatis的依赖,具体如下:

<!-- MyBatis-Plus依赖 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>${mybatis.plus.version}</version>
</dependency>

<!-- MyBatis依赖 -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>${mybatis.version}</version>
</dependency>

其中,mybatis.version{mybatis.version}和{mybatis.plus.version}是变量,需要在项目中进行定义。

2.配置分页插件 在Spring Boot项目中,可以通过以下方式进行分页插件的配置:

@Configuration
public class MybatisPlusConfig {

    /**
     * 配置分页插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

3.实体类继承BaseEntity 在MyBatis-Plus中实现分页,需要在实体类中继承BaseEntity类,如下所示:

@Data
public class User extends BaseEntity {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

4.在Mapper中使用分页查询 在Mapper层中,可以使用MyBatis-Plus提供的Page对象来实现分页查询,具体步骤如下:

(1)定义方法,通过@Param注解来传递分页参数:

List<User> selectPageList(@Param("page") Page<User> page);

(2)在方法体中,使用selectPage方法进行分页查询,并返回结果:

@Override
public List<User> selectPageList(Page<User> page) {
    return baseMapper.selectPage(page, null);
}

(3)在Service层中使用分页查询

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Override
    public IPage<User> selectPage(Page<User> page) {
        return baseMapper.selectPage(page, null);
    }
}

(4)在Controller层中获取分页信息以及数据列表

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/list")
    public Page<User> pageList(@RequestParam(defaultValue = "1") Integer pageNo,
                               @RequestParam(defaultValue = "10") Integer pageSize) {
        Page<User> page = new Page<>(pageNo, pageSize);
        IPage<User> iPage = userService.selectPage(page);
        return iPage;
    }
}

以上就是使用MyBatis-Plus实现分页的详细步骤和代码示例。 mybatis-plus官网

上述两种方式都比较推荐