使用mybatis-plus封装分页

在用mybatis-plus分页插件的时候,会存在一个问题。那就是它自带的分页每次都是返回所有的实体数据给到前端。是只想要给VO对象给前端。

@Data
public class PageInfo<T>{

    @ApiModelProperty("状态码")
    private int code;
    @ApiModelProperty("消息")
    private String message;
    @ApiModelProperty("每页大小")
    private long size;
    @ApiModelProperty("当前页")
    private long current;
    @ApiModelProperty("总条数")
    private long total;
    @ApiModelProperty("多少页")
    private long pages;
    @ApiModelProperty("数据")
    private List<T> data;

    public PageInfo(){

    }

    public static <T> PageInfo<T> build(List<T> list,long current,long size,long total) {
        PageInfo<T> rspData = new PageInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setMessage("查询成功");
        rspData.setData(list);
        rspData.setTotal(total);
        rspData.setCurrent(current);
        rspData.setSize(size);
        rspData.setPages(total%size==0?(total/size):(total/size)+1);
        return rspData;
    }
}
public PageInfo<RuralDynamicsVO> selectList(RuralDynamicsInput input) {
        if (StringUtils.isEmpty(input.getCurrent())){
            input.setCurrent(1);
        }
        if (StringUtils.isEmpty(input.getSize())){
            input.setSize(10);
        }
        Page<RuralDynamics> page = new Page<>(input.getCurrent(),input.getSize());
        LambdaQueryWrapper<RuralDynamics> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(!StringUtils.isEmpty(input.getTitle()),RuralDynamics::getTitle,input.getTitle())
                .like(!StringUtils.isEmpty(input.getReleaseStatus()),RuralDynamics::getReleaseStatus,input.getReleaseStatus())
                .between(!StringUtils.isEmpty(input.getStartTime())
                                && !StringUtils.isEmpty(input.getEndTime()),
                        RuralDynamics::getReleaseTime, input.getStartTime(), input.getEndTime())
                .orderByDesc(RuralDynamics::getId);
        //分页条件查询出所有的结果
        Page<RuralDynamics> page1 = ruralDynamicsMapper.selectPage(page, queryWrapper);
        List<RuralDynamicsVO> list =  new ArrayList<>();
        //拿到所有的数据集
        for (RuralDynamics data : page1.getRecords()) {
            RuralDynamicsVO vo = new RuralDynamicsVO();
            BeanUtils.copyProperties(data,vo);
            list.add(vo);
        }
        PageInfo<RuralDynamicsVO> build = PageInfo.build(list, page1.getCurrent(), page1.getSize(),page1.getTotal());
        return build;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis-Plus 提供了分页功能,可以通过 Page 对象进行分页查询。 下面是一个简单的示例: 1. 在 Mapper 接口中定义分页查询方法: ```java @Mapper public interface UserMapper extends BaseMapper<User> { IPage<User> selectPageVo(Page page, @Param("state") Integer state); } ``` 2. 在 Service 层调用分页查询方法: ```java @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Autowired private UserMapper userMapper; public IPage<User> selectUserPage(Page page, Integer state) { return userMapper.selectPageVo(page, state); } } ``` 3. 在 Controller 层调用 Service 层的方法: ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/user") public IPage<User> getUserPage(Page page, Integer state) { return userService.selectUserPage(page, state); } } ``` 在这个示例中,我们使用MyBatis-Plus 提供的 Page 对象进行分页查询,通过 `selectPageVo` 方法实现了分页查询功能。 ### 回答2: 使用MyBatis-Plus进行分页需要以下步骤: 1. 首先,确保已经正确集成了MyBatis-Plus依赖,并配置了相关的数据库连接信息。 2. 在Mapper接口中定义查询方法,该方法的参数包括分页对象(com.baomidou.mybatisplus.extension.plugins.pagination.Page)和查询条件。 3. 使用MyBatis-Plus提供的PageHelper类创建分页对象,并设置分页参数,如当前页码和每页显示数量。 4. 调用Mapper接口中的查询方法,将分页对象和查询条件作为参数传入。 5. 在查询方法中,使用MyBatis-Plus提供的Page对象进行分页查询,使用Page对象的selectPage方法,并将Page对象和查询条件作为参数传入。 6. 查询结果将会封装在Page对象中,通过Page对象的getRecords方法可以获取查询结果集。 7. 最后,可以通过Page对象的getTotal方法获取总记录数,从而得到总页数和当前页的记录数。 下面是一个示例: ```java // Mapper接口方法定义 List<User> getUserList(Page<User> page, @Param("name") String name); // 分页查询示例 Page<User> page = new Page<>(1, 10); // 创建分页对象,当前页码为1,每页显示10条记录 List<User> userList = userMapper.getUserList(page, "张三"); // 调用查询方法,传入分页对象和查询条件 List<User> records = page.getRecords(); // 获取查询结果集 long total = page.getTotal(); // 获取总记录数 long pages = page.getPages(); // 获取总页数 long current = page.getCurrent(); // 获取当前页码 long size = page.getSize(); // 获取每页显示数量 ``` 这样就可以使用MyBatis-Plus进行分页查询了。 ### 回答3: 使用Mybatis-Plus进行分页,首先需要在代码中引入Mybatis-Plus的依赖。 分页查询可以通过Page类来实现,具体步骤如下: 1. 创建一个Page对象: ```java Page<T> page = new Page<T>(current, size); ``` 其中,current代表当前页码,size代表每页记录数。 2. 调用Mybatis-Plus提供的分页查询方法,将Page对象作为参数传入: ```java IPage<T> result = myMapper.selectPage(page, queryWrapper); ``` 其中,myMapper是你自己创建的Mapper接口对象,queryWrapper是条件构造器,用于指定查询条件。 3. 从IPage对象中获取分页查询结果: ```java List<T> records = result.getRecords(); // 当前页的数据列表 long total = result.getTotal(); // 总记录数 long pages = result.getPages(); // 总页数 ``` 通过这种方式,我们可以方便地实现分页查询操作。同时,Mybatis-Plus还提供了一些其他的分页查询方法,如selectMapsPage()方法用于返回Map类型的分页查询结果,selectPage()方法的重载版本等,可以根据具体需求进行选择。 需要注意的是,使用Mybatis-Plus进行分页查询时,需要在实体类中声明分页相关的属性,以及对应的getter和setter方法。这些属性包括current(当前页)、size(每页记录数)、total(总记录数)、pages(总页数)等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值