Mybatis中如何实现多表查询并构建长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计816个文字,预计阅读时间需要4分钟。
在数据库中存在一对多、多对多等关系时,若在一个表中的主键可能作为另一个表的外键存在,查询时返回的结果可能不是单一值,而是多个相关联的记录。因此,需要使用`resultMap`来映射这些关联关系。
t.text假设在数据库中存在一对多、多对多等关系,则在一个表中的主键可能作为另一个表的外键而存在,所以在查询的时候返回的
结果可能不单单是一个JOPO类,因此就要用到resultMap这个元素去自己定义相关要返回的内容。通常一对多用到association
这个元素,多对一用到collection元素。
一对多内容:
假设一个班级对应多个学生的情况。
班级表:
CREATE TABLE `clazz` (
`id` int(14) NOT NULL DEFAULT '0',
`code` varchar(18) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
学生表:
CREATE TABLE `student` (
`id` int(14) NOT NULL DEFAULT '0',
`name` varchar(18) DEFAULT NULL,
`sex` varchar(18) DEFAULT NULL,
`age` int(14) DEFAULT NULL,
`clazz_id` int(14) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `class_id` (`clazz_id`),
CONSTRAINT `class_id` FOREIGN KEY (`clazz_id`) REFERENCES `clazz` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
班级类:
private int id;
private String code;
学生类:
private int id;
private String name;
private String sex;
private int age;
private Clazz clazz;
其中clazz属性对应Clazz对象。
查询要求:查询学生的时候同时显示班级信息。多对一关系。
本文共计816个文字,预计阅读时间需要4分钟。
在数据库中存在一对多、多对多等关系时,若在一个表中的主键可能作为另一个表的外键存在,查询时返回的结果可能不是单一值,而是多个相关联的记录。因此,需要使用`resultMap`来映射这些关联关系。
t.text假设在数据库中存在一对多、多对多等关系,则在一个表中的主键可能作为另一个表的外键而存在,所以在查询的时候返回的
结果可能不单单是一个JOPO类,因此就要用到resultMap这个元素去自己定义相关要返回的内容。通常一对多用到association
这个元素,多对一用到collection元素。
一对多内容:
假设一个班级对应多个学生的情况。
班级表:
CREATE TABLE `clazz` (
`id` int(14) NOT NULL DEFAULT '0',
`code` varchar(18) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
学生表:
CREATE TABLE `student` (
`id` int(14) NOT NULL DEFAULT '0',
`name` varchar(18) DEFAULT NULL,
`sex` varchar(18) DEFAULT NULL,
`age` int(14) DEFAULT NULL,
`clazz_id` int(14) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `class_id` (`clazz_id`),
CONSTRAINT `class_id` FOREIGN KEY (`clazz_id`) REFERENCES `clazz` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
班级类:
private int id;
private String code;
学生类:
private int id;
private String name;
private String sex;
private int age;
private Clazz clazz;
其中clazz属性对应Clazz对象。
查询要求:查询学生的时候同时显示班级信息。多对一关系。

