MyBatis-Plus分页 mdash  mdash PageHelper和IPage介绍

MyBatis-Plus是MyBatis的增强工具包,提供了很多方便的操作方法和功能。其中,分页功能是应用中常用的,常用的分页实现方式有两种:PageHelper和IPage。

# PageHelper分页

PageHelper是一个MyBatis分页插件,可以用于MyBatis实现分页查询功能。相对于传统分页方式,PageHelper可以帮助我们完成分页数据的快速查询和返回结果,大大提高了分页数据的查询效率。

使用PageHelper分页需要在MyBatis的配置文件中配置插件,同时在执行查询时使用PageHelper的startPage方法指定分页查询参数。下面是一个简单的代码示例:

```

// 在执行查询之前调用startPage方法指定分页参数

PageHelper.startPage(pageNum, pageSize);

// 调用查询语句,获取分页数据

List userList = userMapper.selectUserList();

// 对分页数据进行处理

PageInfo pageInfo = new PageInfo(userList);

```

在这个示例中,我们使用了PageHelper的startPage方法指定了分页查询的页码和页大小,并执行了查询语句获取了分页数据。最后,我们使用PageInfo对分页数据进行了处理。

PageInfo是PageHelper提供的一个包含分页信息的实体类,可以方便地获取当前页码、总页数、总记录数等分页信息。

PageHelper不仅可以用于MyBatis的分页查询,还可以扩展到其他框架与ORM工具中。

# IPage分页

IPage是MyBatis-Plus提供的分页类,可以方便地实现分页查询和结果返回。使用IPage需要在查询方法的参数列表中传入一个IPage对象,IPage中定义了分页信息和分页数据两个属性。

下面是一个IPage分页查询的示例:

```

// 创建一个分页对象

IPage page = new Page<>(pageNum, pageSize);

// 执行分页查询,将分页信息和分页数据塞到IPage对象中

userMapper.selectPage(page, null);

// 获取分页数据

List userList = page.getRecords();

```

在这个示例中,我们创建了一个IPage对象,并使用selectPage方法执行分页查询,将分页信息和分页数据塞到IPage对象中。最后,我们通过IPage的getRecords方法获取分页数据。

与PageHelper相比,IPage的实现方式更加简洁和高效,可以方便地实现分页查询和结果返回。同时,IPage也提供了更多的分页信息和处理方法,具有很好的扩展性。

# 示例说明

下面是一个基于Spring Boot和MyBatis-Plus的分页查询案例:

首先,在pom.xml中引入相关依赖:

```

com.baomidou

mybatis-plus-boot-starter

3.4.0

com.github.pagehelper

pagehelper-spring-boot-starter

1.3.0

```

然后,定义一个User实体类和对应的Mapper接口:

```

public class User {

private Long id;

private String username;

private Integer age;

// 省略getter和setter方法

}

@Mapper

public interface UserMapper extends BaseMapper {

List selectUserList();

}

```

接下来,编写一个UserService,实现分页查询方法:

```

@Service

public class UserService {

@Autowired

private UserMapper userMapper;

/**

* 使用PageHelper实现分页查询

* @param pageNum

* @param pageSize

* @return

*/

public PageInfo selectUserListByPageHelper(int pageNum, int pageSize) {

// 在执行查询之前调用startPage方法指定分页参数

PageHelper.startPage(pageNum, pageSize);

// 执行查询语句,获取分页数据

List userList = userMapper.selectUserList();

// 对分页数据进行处理

PageInfo pageInfo = new PageInfo<>(userList);

return pageInfo;

}

/**

* 使用IPage实现分页查询

* @param pageNum

* @param pageSize

* @return

*/

public IPage selectUserListByIPage(int pageNum, int pageSize) {

// 创建一个分页对象

IPage page = new Page<>(pageNum, pageSize);

// 执行分页查询,将分页信息和分页数据塞到IPage对象中

userMapper.selectPage(page, null);

// 获取分页数据

List userList = page.getRecords();

// 返回IPage对象

return page;

}

}

```

最后,在控制器中调用UserService的分页查询方法:

```

@RestController

public class UserController {

@Autowired

private UserService userService;

/**

* 使用PageHelper实现分页查询

* @param pageNum

* @param pageSize

* @return

*/

@GetMapping("/users/pagehelper")

public PageInfo selectUserListByPageHelper(@RequestParam(required = false, defaultValue = "1") int pageNum,

@RequestParam(required = false, defaultValue = "10") int pageSize) {

return userService.selectUserListByPageHelper(pageNum, pageSize);

}

/**

* 使用IPage实现分页查询

* @param pageNum

* @param pageSize

* @return

*/

@GetMapping("/users/ipage")

public IPage selectUserListByIPage(@RequestParam(required = false, defaultValue = "1") int pageNum,

@RequestParam(required = false, defaultValue = "10") int pageSize) {

return userService.selectUserListByIPage(pageNum, pageSize);

}

}

```

这是一个基本的分页查询的案例,通过比较PageHelper和IPage的使用方法和效果,我们可以选择更适合自己的分页实现方式。同时,也可以了解到MyBatis-Plus和Spring框架的整合使用方法。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(95) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部