Mybatis<collection>实现一对多

时隔多年又用到这样的查询方式了,提前声明一下分页最后返回的数据会小于每页条数,废话不多说直接上代码!

@Data
public class PbcUserTargetTaskPageVO {

    @ApiModelProperty("个人绩效指标id")
    private Long id;

    @ApiModelProperty("月份")
    private String month;

    @ApiModelProperty("工号")
    private String employeeNo;

    @ApiModelProperty("姓名")
    private String employeeName;

    @ApiModelProperty("月份")
    private String oraName;

    @ApiModelProperty(value = "目标")
    private BigDecimal goal;

    @ApiModelProperty(value = "绩效指标")
    private String targetName;

    @ApiModelProperty(value = "个人绩效指标关键任务")
    private List<PbcKeyTaskVO> taskList;
}
@Data
public class PbcKeyTaskVO {

    @ApiModelProperty(value = "主键id")
    private Long id;

    @ApiModelProperty(value = "任务编码")
    private String code;

    @ApiModelProperty(value = "任务名称")
    private String name;

    @ApiModelProperty(value = "任务类型")
    private String type;

    @ApiModelProperty(value = "任务描述")
    private String detail;

    @ApiModelProperty(value = "创建人工号")
    private String createBy;

    @ApiModelProperty(value = "创建人名字")
    private String createName;

    @ApiModelProperty(value = "创建时间")
    private String createTime;

    @ApiModelProperty(value = "是否关联绩效指标任务 Y=已关联,N=未关联")
    private String isRelated;
}
public interface PbcUserTargetTaskMapper extends BaseMapper<PbcUserTargetTask> {

    Page<PbcUserTargetTaskPageVO> pageList(Page page, PbcUserTargetTaskPageRequest dto);
}
    <!-- 通用查询映射结果 -->
    <resultMap id="PageResultMap" type="com.shinho.plrs.manager.pojo.vo.PbcUserTargetTaskPageVO">
        <id column="user_target_id" property="id" />
        <result column="month" property="month" />
        <result column="employee_no" property="employeeNo" />
        <result column="employee_name" property="employeeName" />
        <result column="oraName" property="oraName" />
        <result column="goal" property="goal" />
        <result column="targetName" property="targetName" />
        <!-- 配置一对多关联 -->
        <collection property="taskList" ofType="com.shinho.plrs.manager.pojo.vo.PbcKeyTaskVO">
            <id property="id" column="task_id"/>
            <result property="code" column="task_code"/>
            <result property="name" column="task_name"/>
            <result property="type" column="task_type"/>
            <result property="detail" column="task_detail"/>
            <result property="createTime" column="task_create_time"/>
       </collection>
    </resultMap>

<select id="pageList" resultMap="PageResultMap">
        SELECT
            a.id AS user_target_id,
            a.`user_number` AS employee_no,
            a.`name` AS employee_name,
            a.`position` AS position,
            d.ora_name AS oraName,
            a.`target_code`,
            e.`name` AS targetName,
            a.`goal`,
            a.`version_date` AS `month`,
            b.task_id,
            c.`code` AS task_code,
            c.`name` AS task_name,
            c.type AS task_type,
            c.detail AS task_detail,
            c.create_time AS task_create_time
        FROM
            user_target_result a
            LEFT JOIN pbc_user_target_task b ON a.version_date=b.`month` AND a.user_number=b.employee_no AND a.target_code=b.target_code
            LEFT JOIN pbc_key_task c ON b.task_id=c.id
            LEFT JOIN assess_base_snapshot d ON a.version_date=d.`month` AND a.user_number=d.employee_no AND a.position=d.assess_position_name
            LEFT JOIN plrs_target e ON a.target_code=e.`code`
        WHERE
            a.version_date = '2024-07'
        AND a.user_number = '21120060'
        AND ( d.ora_id = '01003403' OR locate('01003403',d.ora_parent_group ) > 0)
        ORDER BY a.user_number DESC
    </select>

这里就知道了,一页10条,但是返回后有一条数据1v2,所以变成了9,前端页面会看起来很怪就会有问题,这是只有一个,如果一对10那一页就只返回了一条数据。这种查询不适合用于分页查询!

相关推荐

  1. Mybitescollection

    2024-07-17 19:02:02       29 阅读
  2. MyBatis——实现级联表查询(一对一,

    2024-07-17 19:02:02       36 阅读
  3. mybatis一对一,,字段重复

    2024-07-17 19:02:02       27 阅读
  4. Mybatis一对一,关联查询

    2024-07-17 19:02:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 19:02:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 19:02:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 19:02:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 19:02:02       69 阅读

热门阅读

  1. Local Cache(二)demo

    2024-07-17 19:02:02       18 阅读
  2. Git简要笔记

    2024-07-17 19:02:02       19 阅读
  3. 爬虫-存储数据

    2024-07-17 19:02:02       22 阅读
  4. Windows的包管理器Chocolatey

    2024-07-17 19:02:02       21 阅读
  5. 渗透测试前景怎么样

    2024-07-17 19:02:02       22 阅读
  6. 区块链技术的应用场景和优势

    2024-07-17 19:02:02       19 阅读
  7. 摘要算法介绍

    2024-07-17 19:02:02       23 阅读
  8. 如何规避苹果开发者账户关联

    2024-07-17 19:02:02       22 阅读
  9. golang笔记-流程控制

    2024-07-17 19:02:02       20 阅读
  10. js数组去重(4种方法)

    2024-07-17 19:02:02       19 阅读