关于MyBatis 查询数据属性中多对一的问题(多条数据对应一条数据)

网友投稿 514 2023-02-18

关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)

关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)

数据准备

数据表

CREATE TABLE `teacher`(

id INT(10) NOT NULL,

`name` VARCHAR(30) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `teacher`(id,`name`) VALUES(1,'大师');

CREATE TABLE `student`(

id INT(10) NOT NULL,

`name` VARCHAR(30) DEFAULT NULL,

`tid` INT(10) DEFAULT NULL,

PRIMARY KEY(id),

KEY `fktid` (`tid`),

CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student(`KkhQpLGJid`,`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);

Teacher 类

public class Teacher {

private int id;

private String name;

}

Student 类

public class Student {

private int id;

private String name;

private Teacher teacher;

}

查询接口

public interface StudentMapper {

// 查询嵌套处理 - 子查询

List getStudentList();

// 结果嵌套处理

List getStudentResult();

}

查询嵌套处理(子查询)

思路:先查询出所有学生的数据,再根据学生中关联老师的字段 tid 用一个子查询去查询老师的数据

association:处理对象

property:实体类中属性字段

column:查询结果中需要传递给子查询的字段

javaType:指定实体类

select:子查询SQL

select * from student

select * from teacher where id = #{id}

结果嵌套处理

思路:先把所有的信息一次性查询处理, 然后配置字段对应的实体类, 使用 association 配置

association:处理对象

property:实体类中属性字段

javaType:指定实体类

SELECT s.id sid, s.name sname, t.name tname FROM student s, teacher t WHERE s.tid = t.id

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:移动应用开发收入(移动应用开发出来找什么工作)
下一篇:Mybatis自定义SQL的关系映射、分页、排序功能的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~