mybatis 换一种格式完成一对一关联单表查询

上次我们查询的是类,这次我们试试查询list。

联动:

https://xie4ever.com/2016/04/16/mybatis-%e5%ae%8c%e6%88%90%e4%b8%80%e5%af%b9%e4%b8%80%e5%85%b3%e8%81%94%e5%8d%95%e8%a1%a8%e6%9f%a5%e8%af%a2/

其实上次的方法是有大问题的。

因为限制了id为绝对单一,所以通过id去查找数据无论如何都只能查到一个实体类的数据。但是,如果存在多个匹配结果,因为单个实体类无法映射多个返回,就会报错。

为了解决这个问题,需要使用list去承载多个返回的实体类结果。

一、代码实现

(1)首先写好class的实体类Class2

主要改动就是private List<Teacher> teachers,从单一实体类换成了list。

(2)配置sql映射文件ClassMapper2.xml

注意:teachers这个字段从association换成了collection。

(3)在mybatis配置文件conf.xml中注册sql配置文件ClassMapper2.xml

一样的注册,没有什么不同。

(4)写一个测试方法

运行结果:

成功输出了class中id为1的teacher的数据。

(5)分析

这次只做了一点小改动,但是意义有很大不同。

如果class的实体类中嵌入的是teacher的实体类,那么查询结果只能有1个,如果存在多个返回值,就报错。所以,如果存在多个查询结果,就需要一个list来装载查询结果。

所以改成了一个List<Teacher>,这样就允许返回多个结果了。

二、总结

如果有多个返回结果,就可以这么写。