mybatis一对多,多对一

前言

例如一个老师可以教英语,数学,语文等多个课程,mybatis高级映射是怎么处理的。

具体一对多

1.建教师表teacher

CREATE TABLE `teacher` (
  `teacher_no` int(11) NOT NULL,
  `teacher_name` varchar(255) NOT NULL,
  PRIMARY KEY (`teacher_no`)
) 

建课程表class

CREATE TABLE `class` (
  `class_no` int(11) NOT NULL,
  `class_name` varchar(255) NOT NULL,
    `teacher_no` int(11) NOT NULL,
  PRIMARY KEY (`class_no`)
)

2.建课程实体类Classes

public class Classes {

    private int classNo;//课程号

    private String className;//课程名

    private int teacherNo;//教师号

    public int getClassNo() {
        return classNo;
    }

    public void setClassNo(int classNo) {
        this.classNo = classNo;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public int getTeacherNo() {
        return teacherNo;
    }

    public void setTeacherNo(int teacherNo) {
        this.teacherNo = teacherNo;
    }

}

建教师实体类Teacher

public class Teacher {

    private int teacherNo;//教师号

    private String teacherName;//教师名

    private List<Classes> classes;

    public int getTeacherNo() {
        return teacherNo;
    }

    public void setTeacherNo(int teacherNo) {
        this.teacherNo = teacherNo;
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public List<Classes> getClasses() {
        return classes;
    }

    public void setClasses(List<Classes> classes) {
        this.classes = classes;
    }

}

3.mybatis映射文件mapper

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mycompany.dao.HelloWorldDao">

    <resultMap type="com.mycompany.entity.Teacher" id="getClassMap">
        <id property="teacherNo" column="teacher_no"/>   
        <result property="teacherName" column="teacher_name"/>
        <collection property="classes" ofType="com.mycompany.entity.Classes">
            <id property="classNo" column="class_no"/>  
            <result property="className" column="class_name"/>
        </collection>
    </resultMap>

    <select id="getTeacherDetail" parameterType="int" resultMap="getClassMap">
        select * from class c, teacher t  where c.teacher_no = t.teacher_no and t.teacher_no=#{id}
    </select>

</mapper>

4.java代码

List<Teacher> list = helloWorldDao.getName(id);

list中每条Teacher都有可能对应一条Classes或多条classes。

后记

每个老师可能叫多种课程,所有Teacher类中classes用List<Classes>类型。而在mapper映射文件中用collection 子标签。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值