官方文档中给出了几种分页方式,挨个举例说明一下
IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
// or (class MyPage extends Ipage<UserVo>{ private Integer state; })
MyPage selectPageVo(MyPage page);
// or
List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);
这三种 Mybatis Plus 分页方式的区别主要在于传递参数的方式和返回结果的类型。
- IPage selectPageVo(IPage<?> page, Integer state)
这种方式需要传入一个 IPage 对象作为分页参数,其泛型类型可以是任何实体类。方法返回值也是一个 IPage 对象,其中的泛型类型是
UserVo 类型,表示查询结果集。
- MyPage selectPageVo(MyPage page)
这种方式需要传入一个自定义的分页对象 MyPage 作为分页参数,该对象继承了 Mybatis Plus 提供的 IPage
接口,并添加了一个 Integer 类型的 state 属性。方法返回值也是一个 MyPage 对象,其中的泛型类型是 UserVo
类型,表示查询结果集。
- List selectPageVo(IPage page, Integer state)
这种方式需要传入一个 IPage 对象作为分页参数,其中的泛型类型是 UserVo 类型。方法返回值是一个
List 对象,表示查询结果集。
总的来说,这三种方式的核心都是使用 Mybatis Plus 提供的分页插件来实现分页功能,不同的是传递参数和返回结果的方式略有差异。根据实际需要选择合适的方式即可。
下边分别举例子说明下使用方法
1. IPage selectPageVo(IPage<?> page, Integer state)
以查询用户列表为例,假设我们有一个 User 实体类,其中包含了用户的
id、姓名、年龄等属性。我们要实现的功能是查询所有年龄大于指定值的用户列表,并按照 id 升序排列,每页显示 10 条记录。
首先,在 UserMapper 接口中定义一个 selectUserList() 方法,代码如下:
public interface UserMapper extends BaseMapper<User> {
IPage<UserVo> selectUserList(IPage<?> page, Integer age);
}
然后,在 UserService 中调用该方法进行分页查询,代码如下:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<UserVo> getUserList(Integer pageNum, Integer age) {
IPage<UserVo> page = new Page<>(pageNum, 10, true);
page.setOrderByAsc("id");
return userMapper.selectUserList(page, age);
}
}
这里创建了一个 Page 对象,指定当前页码和每页显示数量,并设置了按照 id 字段升序排序。然后将该 Page 对象作为参数,调用 UserMapper 中的 selectUserList() 方法,获取查询结果。
最后,在 Controller 中接收请求参数并返回结果集,代码如下:文章来源:https://www.toymoban.com/news/detail-730000.html
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public Result getUsers(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "18") Integer age) {
IPage<UserVo> userList = userService.getUserList(pageNum, age);
return Result.success(userList);
}
}
通过以上示例可以发现,该方式需要传入一个 IPage 对象作为分页参数,并且返回的结果集类型是 UserVo。
2. MyPage selectPageVo(MyPage page)
以查询订单列表为例,假设我们有一个 Order 实体类,其中包含了订单的 id、用户
id、订单号等属性。我们要实现的功能是查询指定用户的订单列表,并按照订单生成时间倒序排列,每页显示 20 条记录。
首先,在 OrderMapper 接口中定义一个 selectOrderList() 方法,代码如下:
public interface OrderMapper extends BaseMapper<Order> {
MyPage selectOrderList(MyPage page, Long userId);
}
这里需要使用自定义的分页对象 MyPage,并添加一个 Long 类型的 userId 属性。然后在方法中使用该 userId 属性进行查询,并将查询结果封装到 MyPage 中返回。
然后,在 OrderService 中调用该方法进行分页查询,代码如下:
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
public MyPage getOrderList(Long userId, Integer pageNum) {
MyPage page = new MyPage(pageNum, 20);
page.setDesc("create_time");
page.setUserId(userId);
return orderMapper.selectOrderList(page, userId);
}
}
这里创建了一个 MyPage 对象,指定当前页码和每页显示数量,并设置了按照 create_time 字段倒序排序,并将 userId 设置到 MyPage 对象中。然后将该 MyPage 对象作为参数,调用 OrderMapper 中的 selectOrderList() 方法,获取查询结果。
最后,在 Controller 中接收请求参数并返回结果集,代码如下:
@RestController
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping("/orders")
public Result getOrders(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam Long userId) {
MyPage orderList = orderService.getOrderList(userId, pageNum);
return Result.success(orderList);
}
}
通过以上示例可以发现,该方式需要使用自定义的分页对象 MyPage,并且返回的结果集类型是根据 MyPage 泛型类型指定的。
3. List selectPageVo(IPage page, Integer state)
以查询文章列表为例,假设我们有一个 Article 实体类,其中包含了文章的
id、标题、内容等属性。我们要实现的功能是查询所有状态为已发布的文章列表,并按照发布时间倒序排列,每页显示 15 条记录。
首先,在 ArticleMapper 接口中定义一个 selectArticleList() 方法,代码如下:
public interface ArticleMapper extends BaseMapper<Article> {
List<ArticleVo> selectArticleList(IPage<ArticleVo> page, Integer state);
}
然后,在 ArticleService 中调用该方法进行分页查询,代码如下:
@Service
public class ArticleService {
@Autowired
private ArticleMapper articleMapper;
public IPage<ArticleVo> getArticleList(Integer pageNum) {
IPage<ArticleVo> page = new Page<>(pageNum, 15);
page.setDesc("publish_time");
return articleMapper.selectArticleList(page, 1);
}
}
这里创建了一个 Page 对象,指定当前页码和每页显示数量,并设置了按照 publish_time 字段倒序排序。然后将该 Page 对象作为参数,调用 ArticleMapper 中的 selectArticleList() 方法,获取查询结果。
最后,在 Controller 中接收请求参数并返回结果集,代码如下:
@RestController
public class ArticleController {
@Autowired
private ArticleService articleService;
@GetMapping("/articles")
public Result getArticles(@RequestParam(defaultValue = "1") Integer pageNum) {
IPage<ArticleVo> articleList = articleService.getArticleList(pageNum);
return Result.success(articleList);
}
}
通过以上示例可以发现,该方式需要传入一个泛型为 ArticleVo 的 IPage 对象作为分页参数,并且返回的结果集类型是 ArticleVo。文章来源地址https://www.toymoban.com/news/detail-730000.html
到了这里,关于mybatisplus的几种分页方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!