遇到了一个bug,耗费了自己一些时间
稍微拖了下自己的学习进度
本来呢是打算学完三种多表关联查询的
结果学到一对多查询的时候遇到了一个bug
老实说,我遇到bug时还是不太反感的
因为我本身也在做一个bug系列
将自己遇到过的bug及解决方法记录下来
就是很多时候发现自己犯的尽是些低级错误
今天遇到的问题我大致说明下:
Java中实体类和数据表是相对应的
而多表查询结果涉及到多张表的结果
那如何用一个实体类接收返回值呢?
如果是一对一,比如order和user
那么就可以封装user到Order实体类中
如果是一对多,比如order和orderdetail
那么封装orderdetail集合到Order实体类中
在映射文件中resultMap标签可以处理返回值
当然id要和对应的sql语句标签对应
如果是一对一,使用子标签association说明:
property:user,即Order类中的user属性
javaType:User,即user和User实体类对应
也就是将Order类中的user属性和User类映射起来了
如果是一对多,使用子标签collection说明:
这猜都能猜的出来,加上idea开发工具也有提示
并且collection本身也就是集合的意思
当时我就想,这还不简单,依样画葫芦好了
将Order类中的orderdetail集合对应的属性
和Orderdetail实体类映射起来不就好了?
结果控制台报错说参数类型异常
后来我看了教程才知道我属性设置错了
正确的写法是:
javaType:List,说明集合类型为List
ofType:Orderdetail,指定集合对应泛型
ofType这个属性是我万万没有想到的
因为collection本身就是集合的意思
我以为它能自动识别
所以在javaType中直接指定了泛型
看来自己还是将很多事情想得太简单了
就好比有个故事说的有人学完汉字一、二、三
便觉得所有的数字都会写了,简直天真
网友评论