广告
返回顶部
首页 > 资讯 > 精选 >怎么解决mybatis一对多查询resultMap只返回了一条记录问题
  • 749
分享到

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

2023-06-21 21:06:25 749人浏览 独家记忆
摘要

本篇内容介绍了“怎么解决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<Book> books;}@Datapublic class Book {    private Integer id;    private String name;    private String press;    private BigDecimal price;    private Integer authorId;}

开始的Mapper.xml文件

<resultMap id="bookMap" type="com.example.demo.dto.Author">        <id column="id" property="id"></id>        <result column="name" property="name"></result>        <result column="address" property="address"></result>        <result column="phone" property="phone"></result>        <collection property="books" ofType="com.example.demo.dto.Book">            <id column="id" property="id"></id>            <result column="name" property="name"></result>            <result column="press" property="press"></result>            <result column="price" property="price"></result>            <result column="author_id" property="authorId"></result>        </collection>    </resultMap>    <select id="queryAuthorInfo" parameterType="java.lang.String" resultMap="bookMap">        select t1.*,t2.* from        author t1 inner join book t2 on t1.id=t2.author_id        where t1.id=#{id}    </select>

使用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

<resultMap id="bookMap" type="com.example.demo.dto.Author">        <id column="id" property="id"></id>        <result column="name" property="name"></result>        <result column="address" property="address"></result>        <result column="phone" property="phone"></result>        <collection property="books" ofType="com.example.demo.dto.Book">            <!---更改book类的id为bookId,数据库book的id更改为book_id-->            <id column="book_id" property="bookId"></id>            <result column="name" property="name"></result>            <result column="press" property="press"></result>            <result column="price" property="price"></result>            <result column="author_id" property="authorId"></result>        </collection>    </resultMap>    <select id="queryAuthorInfo" parameterType="java.lang.String" resultMap="bookMap">        select t1.*,t2.* from        author t1 inner join book t2 on t1.id=t2.author_id        where t1.id=#{id}    </select>

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

<resultMap id="bookMap" type="com.example.demo.dto.Author">        <id column="id" property="id"></id>        <result column="name" property="name"></result>        <result column="address" property="address"></result>        <result column="phone" property="phone"></result>        <collection property="books" ofType="com.example.demo.dto.Book">            <!---这里将column值id更改为别名一致bookId-->            <id column="bookId" property="id"></id>            <result column="name" property="name"></result>            <result column="press" property="press"></result>            <result column="price" property="price"></result>            <result column="author_id" property="authorId"></result>        </collection>    </resultMap>    <select id="queryAuthorInfo" parameterType="java.lang.String" resultMap="bookMap">        <!---这里新增了t2.id as bookId-->        select t1.*,t2.id as bookId, t2.* from        author t1 inner join book t2 on t1.id=t2.author_id        where t1.id=#{id}    </select>

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

--结束END--

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

本文链接: https://www.lsjlt.com/news/300689.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决mybatis一对多查询resultMap只返回了一条记录问题
    问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外。就记录下这个问题 准备两个类:author(作者)和book(书),数据库创建对应的au...
    99+
    2022-11-12
  • 怎么解决mybatis一对多查询resultMap只返回了一条记录问题
    本篇内容介绍了“怎么解决mybatis一对多查询resultMap只返回了一条记录问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述...
    99+
    2023-06-21
  • MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条)
    MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条) 文章目录 MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条) @[toc...
    99+
    2023-09-16
    mybatis mysql java
  • mybatis一对一查询一对多查询遇到的问题怎么解决
    这篇文章主要介绍“mybatis一对一查询一对多查询遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis一对一查询一对多查询遇到的问题怎么解决”文章能帮助大家解决问题。实体...
    99+
    2023-06-30
  • Mybatis对sql表的一对多查询问题怎么解决
    这篇“Mybatis对sql表的一对多查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis对sql表...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作