千家信息网

怎么解决mybatis一对多查询resultMap只返回了一条记录问题

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,本篇内容介绍了"怎么解决mybatis一对多查询resultMap只返回了一条记录问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
千家信息网最后更新 2025年02月12日怎么解决mybatis一对多查询resultMap只返回了一条记录问题

本篇内容介绍了"怎么解决mybatis一对多查询resultMap只返回了一条记录问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外。就记录下这个问题
准备两个类:author(作者)和book(书),数据库创建对应的author->book一对多的数据

@Datapublic class Author {    private Integer id;    private String name;    private String phone;    private String address;    private List books;}@Datapublic class Book {    private Integer id;    private String name;    private String press;    private BigDecimal price;    private Integer authorId;}

开始的Mapper.xml文件

                                                                                                                    

使用postman执行查看结果:

{    "code": "200",    "msg": "成功",    "data": {        "id": 1,        "name": "法外狂徒张三",        "phone": null,        "address": null,        "books": [            {                "id": 1,                "name": "法外狂徒张三",                "press": "人民出版社",                "price": 10.00,                "authorId": 1            }        ]    }}

发现问题:本来author对应book有两条记录,结果books里面只返回了一条记录。
问题原因:2张表的主键都叫id,所以导致结果不能正确展示。
解决方法:1、主键使用不用的字段名。2、查询sql时使用别名
1、主键使用不用的字段名,涉及到更改数据库,只需要更改其中一个即可 。这里演示将book的id更改为book_id

                                                                                                                                

2、查询sql时使用别名。这里演示将查询book时id 更改别名为 bookId

                                                                                                                                

"怎么解决mybatis一对多查询resultMap只返回了一条记录问题"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0