场景:
一条会议申请信息中有会议组织人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尝试了很长时间都失败了,三个实体返回的值是相同的,还要研究。