多对一

suaxi
2020-12-13 / 0 评论 / 91 阅读 / 正在检测是否收录...

多对一处理

多对一:

多对一(学生-老师).png

  • 多个学生对应一个老师
  • 对学生而言:关联,关联一个老师【多对一】
  • 对老师而言,集合,一个老师有很多学生【一对多】

Demo实例:

CREATE TABLE `teacher`(
`id` int(11) NOT NULL,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO teacher(`id`,`name`) VALUES(1,'孙笑川');


CREATE TABLE `student`(
`id` int(11) NOT NULL,
`name` VARCHAR(50) DEFAULT NULL,
`tid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fktid` (`tid`),
CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;


INSERT INTO student(`id`,`name`,`tid`) VALUES(1,'小明',1);
INSERT INTO student(`id`,`name`,`tid`) VALUES(2,'小红',1);
INSERT INTO student(`id`,`name`,`tid`) VALUES(3,'小蓝',1);
INSERT INTO student(`id`,`name`,`tid`) VALUES(4,'小绿',1);
INSERT INTO student(`id`,`name`,`tid`) VALUES(5,'小华',1);

测试环境搭建:

1、导入Lombok

2、新建实体类Teacher,Student

3、建立Mapper接口

4、建立Mapper.xml

5、在mybatis-config.xml核心配置文件中注册绑定接口

6、测试查询是否成功

按照嵌套查询处理:

<mapper namespace="com.sw.dao.StudentMapper">

    <select id="findStudent" resultMap="StudentTeacher">
        select * from student;
    </select>

    <resultMap id="StudentTeacher" type="Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <!--复杂属性需要单独处理 对象:association  集合:collection
        -->
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>
    <select id="getTeacher" resultType="Teacher">
        select * from teacher where id = #{id};
    </select>
</mapper>

按照结果嵌套处理:

<!--按结果集嵌套处理-->
<select id="findStudent2" resultMap="StudentTeacher2">
    select s.id sid,s.name sname,t.name tname
    from student s,teacher t
    where s.tid = t.id;
</select>
    
<resultMap id="StudentTeacher2" type="Student">
    <result property="id" column="sid"/>
    <result property="name" column="sname"/>
    <association property="teacher" javaType="Teacher">
        <result property="name" column="tname"/>
    </association>
</resultMap>
0

评论 (0)

取消