mybatis高级映射一对一、一对多、多对多

一对一用assosiation用javaType

多对多用的是collection,用的是ofType

一对一

 
 <resultMap type="Classes" id="getClassMap">
        <id property="id" column="c_id"/>   
        <result property="name" column="c_name"/>
        <association property="teacher" javaType="Teacher">   
            <id property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        </association>
    </resultMap>

在Cunstomer类中加入Orders orders类型的属性并生产get、set方法

一对多

<resultMap type="com.yc.m.Customer" id="resultCustomerMap"> 
    <id column="id" jdbcType="INTEGER" property="id" />
    <result property="address" column="address"/> 
    <result property="postcode" column="postcode"/> 
    <result property="sex" column="sex"/> 
    <result property="cname" column="cname"/> 
    <collection property="orders" ofType="com.yc.m.Orders">
          <id property="id" column="id"/>
          <result property="code" column="code"/>
    </collection>
  </resultMap>
collection property="orders" ofType="com.yc.m.Orders">
          <id property="id" column="id"/>
          <result property="code" column="code"/>
    </collection>
  </resultMap>

在Cunstomer类中加入List<Orders> orders类型的属性并生产get、set方法

多对多

public class Course {  
            private Integer id;  
            private String courseCode; // 课程编号  
            private String courseName;// 课程名称  
            private List<Student> students;// 选课学生  
           // get/set  
            public Course() {}  
        public Course(Integer id, String courseCode, String courseName) {  
            super();  
            this.id = id;  
            this.courseCode = courseCode;  
            this.courseName = courseName;  
        }  
        public Course(Integer id, String courseCode, String courseName,  
                List<Student> students) {  
            this.id = id;  
            this.courseCode = courseCode;  
            this.courseName = courseName;  
            this.students = students;  
        }  
        public Integer getId() {  
            return id;  
        }  
        public void setId(Integer id) {  
            this.id = id;  
        }  
        public String getCourseCode() {  
            return courseCode;  
        }  
        public void setCourseCode(String courseCode) {  
            this.courseCode = courseCode;  
        }  
        public String getCourseName() {  
            return courseName;  
        }  
        public void setCourseName(String courseName) {  
            this.courseName = courseName;  
        }  
        public List<Student> getStudents() {  
            return students;  
        }  
        public void setStudents(List<Student> students) {  
            this.students = students;  
        }  
        @Override  
        public String toString() {  
            return "Course [id=" + id + ", courseCode=" + courseCode  
                    + ", courseName=" + courseName + ", students=" + students  
                    + "]";  
        }  
}   Course {  
            private Integer id;  
            private String courseCode; // 课程编号  
            private String courseName;// 课程名称  
            private List<Student> students;// 选课学生  
           // get/set  
            public Course() {}  
        public Course(Integer id, String courseCode, String courseName) {  
            super();  
            this.id = id;  
            this.courseCode = courseCode;  
            this.courseName = courseName;  
        }  
        public Course(Integer id, String courseCode, String courseName,  
                List<Student> students) {  
            this.id = id;  
            this.courseCode = courseCode;  
            this.courseName = courseName;  
            this.students = students;  
        }  
        public Integer getId() {  
            return id;  
        }  
        public void setId(Integer id) {  
            this.id = id;  
        }  
        public String getCourseCode() {  
            return courseCode;  
        }  
        public void setCourseCode(String courseCode) {  
            this.courseCode = courseCode;  
        }  
        public String getCourseName() {  
            return courseName;  
        }  
        public void setCourseName(String courseName) {  
            this.courseName = courseName;  
        }  
        public List<Student> getStudents() {  
            return students;  
        }  
        public void setStudents(List<Student> students) {  
            this.students = students;  
        }  
        @Override  
        public String toString() {  
            return "Course [id=" + id + ", courseCode=" + courseCode  
                    + ", courseName=" + courseName + ", students=" + students  
                    + "]";  
        }  
}   
public class Student {  
            private Integer id;  
            private String name; // 姓名  
            private String gender; // 性别  
            private String major; // 专业  
            private String grade; // 年级  
            private List<Course> courses;// 所选的课程  
        public Student(Integer id, String name, String gender,String major, String grade, List<Course> courses) {  
                super();  
                this.id = id;  
                this.name = name;  
                this.gender = gender;  
                this.major = major;  
                this.grade = grade;  
                this.courses = courses;  
            }  
        public Student(Integer id, String name, String gender, String major,  
                String grade) {  
            super();  
            this.id = id;  
            this.name = name;  
            this.gender = gender;  
            this.major = major;  
            this.grade = grade;  
        }  
        public Student() {  
            super();  
        }  
        public Integer getId() {  
            return id;  
        }  
        public void setId(Integer id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public String getGender() {  
            return gender;  
        }  
        public void setGender(String gender) {  
            this.gender = gender;  
        }  
        public String getMajor() {  
            return major;  
        }  
        public void setMajor(String major) {  
            this.major = major;  
        }  
        public String getGrade() {  
            return grade;  
        }  
        public void setGrade(String grade) {  
            this.grade = grade;  
        }  
        public List<Course> getCourses() {  
            return courses;  
        }  
        public void setCourses(List<Course> courses) {  
            this.courses = courses;  
        }  
        @Override  
        public String toString() {  
            return "Student [id=" + id + ", name=" + name + ", gender="  
                    + gender + ", major=" + major + ", grade=" + grade  
                    + ", courses=" + courses + "]";  
        }  
              
        }  Student {  
            private Integer id;  
            private String name; // 姓名  
            private String gender; // 性别  
            private String major; // 专业  
            private String grade; // 年级  
            private List<Course> courses;// 所选的课程  
        public Student(Integer id, String name, String gender,String major, String grade, List<Course> courses) {  
                super();  
                this.id = id;  
                this.name = name;  
                this.gender = gender;  
                this.major = major;  
                this.grade = grade;  
                this.courses = courses;  
            }  
        public Student(Integer id, String name, String gender, String major,  
                String grade) {  
            super();  
            this.id = id;  
            this.name = name;  
            this.gender = gender;  
            this.major = major;  
            this.grade = grade;  
        }  
        public Student() {  
            super();  
        }  
        public Integer getId() {  
            return id;  
        }  
        public void setId(Integer id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public String getGender() {  
            return gender;  
        }  
        public void setGender(String gender) {  
            this.gender = gender;  
        }  
        public String getMajor() {  
            return major;  
        }  
        public void setMajor(String major) {  
            this.major = major;  
        }  
        public String getGrade() {  
            return grade;  
        }  
        public void setGrade(String grade) {  
            this.grade = grade;  
        }  
        public List<Course> getCourses() {  
            return courses;  
        }  
        public void setCourses(List<Course> courses) {  
            this.courses = courses;  
        }  
        @Override  
        public String toString() {  
            return "Student [id=" + id + ", name=" + name + ", gender="  
                    + gender + ", major=" + major + ", grade=" + grade  
                    + ", courses=" + courses + "]";  
        }  
              
        }  

 

<!--  这里使用了嵌套结果ResultMap的方式进行级联查询,当然也可以使用嵌套查询select -->  
     <!-- 映射一个基本的Student查询结果 -->  
        <resultMap id="StudentResult" type="Student">  
            <id property="id" column="id"/>  
            <result property="name" column="name"/>  
            <result property="gender" column="gender"/>  
            <result property="major" column="major"/>  
            <result property="grade" column="grade"/>  
        </resultMap>  
        <!-- 继承上面那个基本的映射,再扩展出级联查询 -->  
        <resultMap id="StudentResultWithCourses" type="Student" extends="StudentResult">  
            <collection property="courses" resultMap="CourseResult"></collection>  
        </resultMap>  
        <!-- 这里特别要是的是column="cid" 这是和select语句中的 c.id as cid对应的 一定一定一定要对应起来 -->  
        <resultMap id="CourseResult" type="Course">  
            <id property="id" column="cid"/>  
            <result property="courseCode" column="course_code"/>  
            <result property="courseName" column="course_name"/>  
        </resultMap>  
        <!--    
            注意:查询语句的中的c.id as cid这个地方,避免名字相同出现查询结果不正确的情况  
            同时在id="CourseResult"的resultMap中也有与这里对应的设置要特别特别注意  
        -->  
        <select id="getStudentByIdWithCourses" parameterType="int" resultMap="StudentResultWithCourses">  
            select s.id,s.name,s.gender,s.major,s.grade,c.id as cid,c.course_code,c.course_name,sc.id,sc.student_id,sc.course_id  
            from student s,course c,student_course sc  
            where    
            s.id=#{id}  
            and  
            s.id=sc.student_id    
            and    
            sc.course_id=c.id  
        </select>  collection property="courses" resultMap="CourseResult"></collection>  
        </resultMap>  
        <!-- 这里特别要是的是column="cid" 这是和select语句中的 c.id as cid对应的 一定一定一定要对应起来 -->  
        <resultMap id="CourseResult" type="Course">  
            <id property="id" column="cid"/>  
            <result property="courseCode" column="course_code"/>  
            <result property="courseName" column="course_name"/>  
        </resultMap>  
        <!--    
            注意:查询语句的中的c.id as cid这个地方,避免名字相同出现查询结果不正确的情况  
            同时在id="CourseResult"的resultMap中也有与这里对应的设置要特别特别注意  
        -->  
        <select id="getStudentByIdWithCourses" parameterType="int" resultMap="StudentResultWithCourses">  
            select s.id,s.name,s.gender,s.major,s.grade,c.id as cid,c.course_code,c.course_name,sc.id,sc.student_id,sc.course_id  
            from student s,course c,student_course sc  
            where    
            s.id=#{id}  
            and  
            s.id=sc.student_id    
            and    
            sc.course_id=c.id  
        </select>  

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值