解决mybatis-plus不能俩表联查分页之手动写分页

public class MyPageHelper {

    // 调用pageInfo插件内的方法 开启分页 需要传入一个起始页的值和每页显示的条数
    public static void startPage(PageRequest pageRequest) {
        PageHelper.startPage(pageRequest.getPageNum(),pageRequest.getPageSize());
    }

    // 封装结果集
    public static PageResult getPageResult(List content) {
        // 创建分页对象 将结果传入对象中 pageInfo对象中生成信息
        PageInfo pageInfo = new PageInfo<>(content);
        // 创建返回的对象
        PageResult pageResult = new PageResult();
        // 获取总页数
        pageResult.setTotal(pageInfo.getTotal());
        // 获取结果
        pageResult.setContent(pageInfo.getList());
        // 获取总页数
        pageResult.setPages(pageInfo.getPages());
        // 获取起始页数
        pageResult.setPageNum(pageInfo.getPageNum());
        // 获取每页显示的条数
        pageResult.setPageSize(pageInfo.getPageSize());
        // 返回结果
        return pageResult;
    }

}

public class PageRequest {

    /**
     *页数
     */
    private int pageNum;
    /**
     * 每页的信息的个数
     */
    private int pageSize;


    public PageRequest() {
    }

    public PageRequest(int pageNum, int pageSize) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    /**
     * 获取
     * @return pageNum
     */
    public int getPageNum() {
        return pageNum;
    }

    /**
     * 设置
     * @param pageNum
     */
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    /**
     * 获取
     * @return pageSize
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * 设置
     * @param pageSize
     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public String toString() {
        return "PageRequest{pageNum = " + pageNum + ", pageSize = " + pageSize + "}";
    }
}

public class PageResult {

        /**
         *页数
         */
        private int pageNum;
        /**
         * 每页的信息的个数
         */
        private int pageSize;
        /**
         * 总条数
         */
        private Long total;
        /**
         * 总页数
         */
        private int pages;
        /**
         * 结果集
         */
        private List content;

    public PageResult() {
    }

    public PageResult(int pageNum, int pageSize, Long total, int pages, List content) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
        this.pages = pages;
        this.content = content;
    }

    /**
         * 返回结果调用的方法
         */
        public static PageResult getPageResult(List content,PageRequest pageRequest,Long total) {
            // 创建返回的对象
            PageResult pageResult = new PageResult();
            // 将分页后查询到的结果放入对象中
            pageResult.setContent(content);
            // 将起始页放入对象中
            pageResult.setPageNum(pageRequest.getPageNum());
            // 将每页显示的条数放入对象中
            pageResult.setPageSize(pageRequest.getPageSize());
            // 将总条数放入对象中
            pageResult.setTotal(total);
            // 返回结果
            return pageResult;
        }


    /**
     * 获取
     * @return pageNum
     */
    public int getPageNum() {
        return pageNum;
    }

    /**
     * 设置
     * @param pageNum
     */
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    /**
     * 获取
     * @return pageSize
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * 设置
     * @param pageSize
     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /**
     * 获取
     * @return total
     */
    public Long getTotal() {
        return total;
    }

    /**
     * 设置
     * @param total
     */
    public void setTotal(Long total) {
        this.total = total;
    }

    /**
     * 获取
     * @return pages
     */
    public int getPages() {
        return pages;
    }

    /**
     * 设置
     * @param pages
     */
    public void setPages(int pages) {
        this.pages = pages;
    }

    /**
     * 获取
     * @return content
     */
    public List getContent() {
        return content;
    }

    /**
     * 设置
     * @param content
     */
    public void setContent(List content) {
        this.content = content;
    }

    public String toString() {
        return "PageResult{pageNum = " + pageNum + ", pageSize = " + pageSize + ", total = " + total + ", pages = " + pages + ", content = " + content + "}";
    }
}

 

 三个实体类写完了后,接下来就是mapper层的编写


@Mapper
public interface StudentDao extends BaseMapper {


List selectAllChd(PageRequest pageRequest);


}

 service的编写与实现类的编写


public interface StudentService  extends IService {

    List selectAllChd(PageRequest pageRequest);

}

@Service
public class StudentServiceImpl extends ServiceImpl implements StudentService  {

    @Resource
    StudentDao studentDao;

    @Override
    public List selectAllChd(PageRequest pageRequest) {
        return studentDao.selectAllChd(pageRequest);
    }
}

 


 再接着是controller的编写


@GetMapping("/query")
@ResponseBody
public PageResult queryList() {//分页写出来了

    System.out.println("进来了query");

    PageRequest pageRequest=new PageRequest(1,3);

    int pageNum = pageRequest.getPageNum();

    pageRequest.setPageNum((pageRequest.getPageSize()*(pageRequest.getPageNum()-1)));

    List carManagerEntityList =studentService.selectAllChd(pageRequest);

    pageRequest.setPageNum(pageNum);

    Long total = studentService.count();

    return PageResult.getPageResult(carManagerEntityList,pageRequest,total);
}

mybatis-plus虽然使用起来方便,但是俩表映射就不能使用自带的分页了,所以需要小伙伴自己手动写,下面是映射语句



    
    
    
    



    
    


 


项目结构如下


解决mybatis-plus不能俩表联查分页之手动写分页_第1张图片


查询效果如下,分页成功,并且俩表映射成功,希望可以帮助到各位小伙伴


解决mybatis-plus不能俩表联查分页之手动写分页_第2张图片

你可能感兴趣的:(mybatis)