代码模板:springboot+Mybatis-Plus分页

我的笔记会更新至我的hexo博客,欢迎访问
BDsnake’s Blog

代码模板:Mybatis-Plus分页

每次写分页都很烦,记录一下实现分页查询的全过程,以后想写分页可以直接改模板

1、

首先分页肯定是要记录页码和页面大小的,所以不如直接整合成一个类,让后面需要分类的对象继承

@Data
public class BasePageDto {
    private Integer pageNum=1;
    private Integer pageSize=20;
}

2、

然后创建具体的需要实现分页的类

这里继承BasePageDto对象后加了一条属性userName,这样就可以做到模糊查询用户名的同时分页,也就是说这个类里放条件

@Data
public class UserListPageDto extends BasePageDto {
//    用户名
    private String userName;
}

3、

创建传输类

@Data
public class UserDto {
    private String userId;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 用户密码
     */
    private String userPassword;

    /**
     * 是否冻结,0正常,1冻结(冻结后无法登陆)
     */
    private Integer userFrozen;

    /**
     * 是否可以发布文章 0不能,1可以发布
     */
    private Integer userPublishArticle;
}

4、

构建返回类

此类作用为构建向前端返回的数据对象,包括页数、大小、总页数、总记录数和数据list

@Data
public class CommonPage<T> {
    private Integer pageNumber;
    private Integer pageSize;
    private Integer totalPage;
    private Long total;
    private List<T> list;

    /**
     * 将PageHelper分页后的list转为分页信息
     */
    public static <T> CommonPage<T> restPage(List<T> list) {
        CommonPage<T> result = new CommonPage<T>();
        Page<T> pageInfo = new Page<T>().setRecords(list);
        result.setTotalPage((int) pageInfo.getPages());
        result.setPageNumber((int) pageInfo.getCurrent());
        result.setPageSize((int) pageInfo.getSize());
        result.setTotal(pageInfo.getTotal());
        result.setList(pageInfo.getRecords());
        return result;
    }

    /**
     * 将SpringData分页后的list转为分页信息
     */
    public static <T> CommonPage<T> restPage(IPage<T> pageInfo) {
        CommonPage<T> result = new CommonPage<T>();
        result.setTotalPage((int) pageInfo.getPages());
        result.setPageNumber((int) pageInfo.getCurrent());
        result.setPageSize((int) pageInfo.getSize());
        result.setTotal(pageInfo.getTotal());
        result.setList(pageInfo.getRecords());
        return result;
    }
}

5、

编写controller

这里默认按照MybatisPlus代码生成器的风格生成了dao层与service层

形式1:视图解析器模板:

    @Resource
    IUserService userService;
    @Resource
    @GetMapping("/list")
    public String userList(@Valid UserListPageDto userListPageDto, Model model){
        //步骤1、获取分页条件
        Integer pageNum = userListPageDto.getPageNum();
        Integer pageSize = userListPageDto.getPageSize();
        String userName = userListPageDto.getUserName();
        //步骤2:构建分页对象并添加条件
        IPage<User> userPage = new Page<>(pageNum,pageSize);
        LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>lambdaQuery().orderByDesc(User::getUserRegisterTime);
        if (StrUtil.isNotBlank(userName)) {
            userLambdaQueryWrapper.like(User::getUserName, userName);
            model.addAttribute("userName", userName);
        }
        IPage<User> userIPage = userService.page(userPage,userLambdaQueryWrapper);
        //步骤3、返回
        model.addAttribute("userPage", CommonPage.restPage(userIPage));
        return "admin/userList";
    }

形式2:返回json

Result类的构建可以参考我的上一篇博客Result模板

    @Resource
    IUserService userService;
    @Resource
    @GetMapping("/list")
    public Result userList(@Valid UserListPageDto userListPageDto){
        //步骤1、获取分页条件
        Integer pageNum = userListPageDto.getPageNum();
        Integer pageSize = userListPageDto.getPageSize();
        String userName = userListPageDto.getUserName();
        //步骤2:构建分页对象并添加条件
        IPage<User> userPage = new Page<>(pageNum,pageSize);
        LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.<User>lambdaQuery().orderByDesc(User::getUserRegisterTime);
        if (StrUtil.isNotBlank(userName)) {
            userLambdaQueryWrapper.like(User::getUserName, userName);
            model.addAttribute("userName", userName);
        }
        IPage<User> userIPage = userService.page(userPage,userLambdaQueryWrapper);
        //步骤3、返回
        return CommonPage.restPage(userIPage);
    }

附录:

service层与dao层

public interface UserMapper extends BaseMapper<User> {

}

public interface IUserService extends IService<User> {

}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值