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尝试了很长时间都失败了,三个实体返回的值是相同的,还要研究。

猜你喜欢

转载自www.cnblogs.com/ssyh/p/12332093.html
今日推荐