解决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<Student> {


List<Student> selectAllChd(PageRequest pageRequest);


}

 service的编写与实现类的编写


public interface StudentService  extends IService<Student> {

    List<Student> selectAllChd(PageRequest pageRequest);

}

@Service
public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> implements StudentService  {

    @Resource
    StudentDao studentDao;

    @Override
    public List<Student> 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<Student> carManagerEntityList =studentService.selectAllChd(pageRequest);

    pageRequest.setPageNum(pageNum);

    Long total = studentService.count();

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

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


<resultMap type="com.cskt.entity.Student" id="StudentMap">
    <result property="sId" column="s_id" jdbcType="INTEGER"/>
    <result property="sName" column="s_name" jdbcType="VARCHAR"/>
    <result property="sSex" column="s_sex" jdbcType="VARCHAR"/>
    <association property="sClass" resultMap="ClassMap"></association>
</resultMap>

<resultMap id="ClassMap" type="com.cskt.entity.StuClass">
    <id property="cId" column="c_id"></id>
    <result property="cName" column="c_name"></result>
</resultMap>

<select id="selectAllChd" resultMap="StudentMap">
    SELECT * FROM `student` as stu  join stu_class    as sts  on  stu.s_class=sts.c_id   limit #{pageNum} ,#{pageSize}
</select>

 


项目结构如下



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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值