美文网首页
自学Java第118天

自学Java第118天

作者: 刘小爱 | 来源:发表于2020-08-24 09:20 被阅读0次

    遇到了一个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中直接指定了泛型

    看来自己还是将很多事情想得太简单了
    ​就好比有个故事说的有人学完汉字一、二、三
    便觉得所有的数字都会写了,简直天真

    相关文章

      网友评论

          本文标题:自学Java第118天

          本文链接:https://www.haomeiwen.com/subject/jaegdktx.html