MyBatis多表查询操作——XML(一对多)

题目:使用Mybatis,使用XML方式查询表中数据(一对多,在原来单表的基础上修改)
单表查询操作链接

一、思路:

思路(实体类+实体类映射文件+mybatis主配置文件+测试类):
我们的目标是要通过一条sql语句,把两张表里面的数据查询出来。

第一:改造我们的实体类
1、给Person类加个集合属性,该集合的数据类型为Food类类型
2、实体类要实现序列化接口(Serializable)
3、Food实体类多了一个Person类类型的属性

第二:写person的实体类映射文件
1、特别注意:以前我们写的select元素的返回值类型是单个实体类类型,而现在改成了自定义返回值类型,用resultMap表示。resultType改成resultMap。
2、然后再自定义resultMap的内容。
定义resultMap里面的内容是重点,务必掌握

第三:主配置文件里面多了一项Food实体类的别名配置

第四:编写测试类,把查询的结果打印输出显示

二、实际操作

第一步:在原来单表的基础上,再创建一张数据表,名字为food;该表具有4个字段,分别是整形的id;整形的pid;varchar类型的fname;varchar类型的taste。

Create table food(id int,pid int,name varchar(10),taste varchar(10));

Insert into food(id,pid,name,taste) values(1,17,‘苹果’,‘甜味’);
//添加多个
在这里插入图片描述

第二步:在原来单表的基础上,在bean包下面新建一个Food类,该类的属性和创建表的字段一致。并给他们get、set方法。
注意:1、给Person类加个集合属性,该集合的数据类型为Food类类型
2、实体类要实现序列化接口(Serializable)
3、Food实体类多了一个Person类类型的属性
在这里插入图片描述
在这里插入图片描述

第三步:配置personMapper.xml文件。
1、注意:以前我们写的select元素的返回值类型是单个实体类类型,而现在改成了自定义返回值类型,用resultMap表示。resultType改成resultMap。
2、然后再自定义resultMap的内容。

在这里插入图片描述

第四步:配置personConfig.xml主配置文件(主配置文件里面多了一项Food实体类的别名配置)
在这里插入图片描述

第五步:更改测试类
在这里插入图片描述

结果:
在这里插入图片描述

总结:定义resultMap里面的内容是重点,务必掌握(有兴趣的同学可去多学习)

猜你喜欢

转载自blog.csdn.net/qq_43296599/article/details/84315835