题目:使用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里面的内容是重点,务必掌握(有兴趣的同学可去多学习)