zoukankan      html  css  js  c++  java
  • mybatis 关联查询多个类型相同对象

    场景:

    一条会议申请信息中有会议组织人id、会议记录人id、会议审核人id,这三个id都都对应staff表中的staff_id。

    需求:查询返回会议申请信息且能够得到组织人、记录人、审核人的姓名、部门、年龄等信息。

    实体类结构:

    public class Meeting_msg {

     
    private Staff meetingOrganizerEntity;
    private Staff meetingRecorderEntity;
    private Staff meetingCheckerEntity;
        
       private String meeting_id;
       ...
    }
    public class Staff {
      private String staffId;
       private String staffName;
       private String staffDepartment;
    ...
    }

    一、注解法:

    1.在 StaffMapper 中新建 Staff getStaffById(String staffId); 

    @Select("Select * from staff where staff_id = #{staffId}")
        @Results({
                @Result(property = "staffId",  column = "staff_id"),
                @Result(property = "staffName",  column = "staff_name")
        })
        Staff getStaffById(String staffId);

    2. Meeting_msgMapper 中新建 Meeting_msg loadMeetingMsgByMeetingId(String meeting_id);

    @Select("select * from meeting_msg where meeting_id = #{meeting_id}")
        @Results({
                @Result(property = "meetingId",  column = "meeting_id"),
                @Result(property = "meetingName",  column = "meeting_name"),
                @Result(property = "meetingType",  column = "meeting_type"),
                @Result(property = "roomId",  column = "room_id"),
                @Result(property = "meetingData",  column = "meeting_data"),
                @Result(property = "meetingStartTime",  column = "meeting_start_time"),
                @Result(property = "meetingEndTime",  column = "meeting_end_time"),
                @Result(property = "meetingOrganizer",  column = "meeting_organizer"),
                @Result(property = "meetingDepartment",  column = "meeting_department"),
                @Result(property = "meetingRecorder",  column = "meeting_recorder"),
                @Result(property = "meetingChecker",  column = "meeting_checker"),
                @Result(property = "meetingAttachmentFileId",  column = "meeting_attachment_file_id"),
                @Result(property = "meetingAttachmentFile",  column = "meeting_attachment_file"),
                @Result(property = "meetingContent",  column = "meeting_content"),
                @Result(property = "meetingRequirement",  column = "meeting_requirement"),
                @Result(property = "meetingStatue",  column = "meeting_statue"),
                @Result(property = "meetingRecordAttendeeState",  column = "meeting_record_attendee_state"),
                @Result(property = "meetingRecordMinuteState",  column = "meeting_record_minute_state"),
                @Result(property = "meetingRecordPresentationState",  column = "meeting_record_presentation_state"),
                @Result(property="meetingOrganizerEntity",column="meeting_organizer",one=@One(select="com.example.meeting.mapper.StaffMapper.getStaffById")),
                @Result(property="meetingRecorderEntity",column="meeting_recorder",one=@One(select="com.example.meeting.mapper.StaffMapper.getStaffById")),
                @Result(property="meetingCheckerEntity",column="meeting_checker",one=@One(select="com.example.meeting.mapper.StaffMapper.getStaffById"))
        })
        Meeting_msg loadMeetingMsgByMeetingId(String meeting_id);
    @Result(property="meetingOrganizerEntity",column="meeting_organizer",one=@One(select="com.example.meeting.mapper.StaffMapper.getStaffById"))该语句给
    meetingOrganizerEntity注入值。
    property:要注入值实体对象
    column:作为getStaffById方法的参数
    one=@One:表示一对一

    二、xml法:

    用了3个association尝试了很长时间都失败了,三个实体返回的值是相同的,还要研究。
  • 相关阅读:
    IT asset register
    微前端
    强缓存和弱缓存(协商缓存)
    比较运算规则 == 、 ===、Object.is 和 ToPrimitive 方法 [[DefaultValue]] (hint)
    事件冒泡、事件捕获、事件委托
    mysql服务没有响应控制功能
    React 项目中有哪些细节可以优化?实际开发中都做过哪些性能优化
    算法的时间复杂度与空间复杂度
    算法:42.接雨水
    解决每次git pull、git push都需要输入账号和密码的问题
  • 原文地址:https://www.cnblogs.com/ssyh/p/12332093.html
Copyright © 2011-2022 走看看