使用mybatisPlus自带的分页方法+xml实现数据分页

发布于:2025-04-18 ⋅ 阅读:(36) ⋅ 点赞:(0)

:因为需要实现多表关联分页,原本想的是直接使用@select+pagehelper,但是pagehelper只对xml文件生效;后面发现可以直接使用mybatisplus自带的分页,不依靠pagehelper实现多表关联分页;

实现类:关键代码:

Page<TgjZhuanKePaiMingVo> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());创建分页对象
    /**
     * 查询国家专科排名数据列表
     */
    @Override
    public TableDataInfo<TgjZhuanKePaiMingVo> queryPageList(TgjZhuanKePaiMingBo bo, PageQuery pageQuery) {
        //查询医院级别字典
        Map<String, String> hosp_level = iSysDictTypeService.selectDictDataByType("hosp_level").stream().collect(Collectors.toMap(
            SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
        //医院类型字典
        Map<String, String> hosp_class = iSysDictTypeService.selectDictDataByType("hosp_class").stream().collect(Collectors.toMap(
            SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
        //所属地区字典
        Map<String, String> hosp_area = iSysDictTypeService.selectDictDataByType("hosp_area").stream().collect(Collectors.toMap(
            SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
        Page<TgjZhuanKePaiMingVo> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
        IPage<TgjZhuanKePaiMingVo> zhuanKePaiMingList = baseMapper.getZhuanKePaiMingList(page, hosp_level.get(bo.getHospLevel()), hosp_class.get(bo.getHospClass()),
           hosp_area.get( bo.getHospArea()), bo.getHospName());
        // 返回封装后的分页数据
        return TableDataInfo.build(zhuanKePaiMingList);
    }

mapper层:关键把

Page<?> page作为分页参数传递
 IPage<TgjZhuanKePaiMingVo> getZhuanKePaiMingList(Page<?> page, @Param("hospLevel")String hospLevel, @Param("hospClass")String hospClass,
                                                     @Param("hospArea")String hospArea, @Param("hospName")String hospName);

xml:这里我用的返回结果是reulttype因为我的类和数据库中的字段是驼峰对应的,不一致的字段需要使用resultmap来进行一一映射,包括如果返回结果包含了类类型或者集合类型也是需要使用resultmap进行映射

    <select id="getZhuanKePaiMingList" resultType="org.yunshu.keyspecialty.domain.vo.TgjZhuanKePaiMingVo">
        SELECT
        a.id,
        a.nian_fen,
        b.hosp_name AS yi_yuan_ming_cheng,
        a.zhuan_ke_dai_ma,
        a.zhuan_ke_ming_cheng,
        a.zhuan_ke_zhi,
        a.pai_ming,
        a.dang_wei,
        b.hosp_level,
        b.hosp_class,
        b.hosp_area,
        b.hosp_grade
        FROM
        Tgj_zhuan_ke_pai_ming a
        LEFT JOIN
        sys_hospital b
        ON
        a.yi_yuan_id = b.hosp_id
        WHERE
        1 = 1
        <if test="hospLevel != null and hospLevel != ''">
            AND b.hosp_level = #{hospLevel}
        </if>
        <if test="hospClass != null and hospClass != ''">
            AND b.hosp_class like convert(#{hospClass},'%')
        </if>
        <if test="hospArea != null and hospArea != ''">
            AND b.hosp_area = #{hospArea}
        </if>
        <if test="hospName != null and hospName != ''">
            AND b.hosp_name LIKE CONCAT(#{hospName}, '%')
        </if>
    </select>


网站公告

今日签到

点亮在社区的每一天
去签到