Mybatis中 collection 和 association 标签 的区别

这篇具有很好参考价值的文章主要介绍了Mybatis中 collection 和 association 标签 的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<collection><association> 是 MyBatis 中用于定义映射关系的标签,它们的区别如下:

  1. 目标对象类型:

    • <collection> 用于表示集合属性,即一个属性对应多个关联对象。
    • <association> 用于表示关联属性,即一个属性对应一个关联对象。
  2. 关联关系处理:

    • <collection> 用于处理一对多或多对多的关联关系,其中集合属性将包含对应的关联对象的集合。
    • <association> 用于处理一对一或多对一的关联关系,其中关联属性将包含对应的关联对象。
  3. SQL 查询方式:

    • <collection> 通常需要执行额外的 SQL 查询来获取关联对象的数据,通常需要使用 select 子句指定查询语句。
    • <association> 通常会在关联对象的查询语句中使用 join 操作,将关联对象的数据与当前对象的数据一起查询出来。
  4. 映射方式:

    • <collection> 通常在结果映射中使用嵌套的 <resultMap> 定义,以映射关联对象的属性。
    • <association> 通常在结果映射中使用 <result> 标签定义,以映射关联对象的属性。

总结起来,<collection> 用于表示一对多或多对多的集合属性,并需要执行额外的 SQL 查询来获取关联对象的数据,而 <association> 用于表示一对一或多对一的关联属性,并使用 join 操作将关联对象的数据与当前对象一起查询出来。

示例:

Mybatis中 collection 和 association 标签 的区别,java,mybatis,数据库

Mybatis中 collection 和 association 标签 的区别,java,mybatis,数据库 拓展:文章来源地址https://www.toymoban.com/news/detail-700425.html

<resultMap id="CommentRecursionMap" type="com.ly.cloud.vo.app.HdplTreeVO">
        <id 	column="pkid" property="pkid"/>
        <result column="xsid" property="xsid"/>
        <result column="xm" property="xm"/>
        <result column="plid" property="plid"/>
        <result column="hfplid" property="hfplid"/>
        <result column="fjid" property="fjid"/>
        <collection property="replyData" select="selectCommentRecursionDataByPlid" column="{plid=pkid}"/>
    </resultMap>
    <!--先查询自主评论的数据,在递归查询回复评论数据-->
    <select id="selectCommentRecursionDataByHdid" resultMap="CommentRecursionMap">
        select
            t.pkid,
          
            t.plid,
        
        from zhxg_gqt_dekt_hdpl t
                 left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
        where t.pllx = '1' and t.hdid = #{hdid}
     
    </select>
    <!--配合selectCommentRecursionDataByHdid使用-->
    <select id="selectCommentRecursionDataByPlid" resultMap="CommentRecursionMap">
        select
            t.pkid,
            t.plid
        from zhxg_gqt_dekt_hdpl t
                 left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
        where nvl(t.hfplid,t.plid) = #{plid}
       
    </select>

到了这里,关于Mybatis中 collection 和 association 标签 的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(37)
  • Mybatis使用collection映射一对多查询分页问题

    场景:页面展示列表,需要查询多的字段,和一的字段。并且还要分页。 这时候直接想到的是手写sql。 原来的sql 。 正常查询tags有两条。加上分页条件,多的一端只有一条数据。 修改之后的sq。满足分页正常展示多的一端。

    2024年02月15日
    浏览(23)
  • MyBatis-plus中的两种快捷操作数据库方式:1、mapper调用 2、ActiveRecord方式(简称AR) 二者的使用和区别介绍

            在使用MyBatis操作数据库时,需要频繁的写mapper层dao接口以及对应的配置文件和SQL语句,当功能方法繁杂,业务逻辑不复杂的时候,我们可以使用MyBatis的升级版MyBatis-Plus来代替我们写这些繁琐的配置文件和简单的SQL。 (1)书写或使用MP生成数据库表对应的实体类。

    2024年02月07日
    浏览(33)
  • MyBatis实现 Java 对象和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月15日
    浏览(35)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(34)
  • 【MyBatis】四、MyBatis中的动态SQL标签

    动态SQL语句是动态的拼接Mybatis中SQL语句的情况,可以动态的在Mybatis中使用SQL if语句的xml文件: 传入对象来进行调用: where标签中的and会被自动去掉,并且若没有合适的内容,则不会添加where 注意:where标签只能去掉条件前的and、五福去掉条件后的and trim标签会在其内容

    2024年02月09日
    浏览(30)
  • MyBatis实现 Java 实体类和数据库中日期类型之间的转换(超详细)

    数据库存储的时间字段的类型是datetime Java实体类的时间字段类型是Date 需求:响应前端的时间字段格式为”yyyy-MM-dd HH:mm:ss“ 1、定义resultMap 定义 Java 对象和数据库表字段的对应关系,在 mapper.xml 文件中使用 #{属性名,jdbcType=数据库字段类型} 来进行参数传递和结果集映射,例如

    2024年02月20日
    浏览(39)
  • Mybatis是什么?Mybatis中动态sql常用标签有哪些?

    Mybatis是什么? Mybatis是一种开源的Java持久层框架,它可以将SQL语句和Java代码进行分离,使得开发人员可以更加专注于业务逻辑的实现。与Hibernate等ORM框架不同的是,Mybatis使用XML或注解的方式来描述SQL语句,这种方式更加灵活,因此在一些需要高度自定义SQL语句的场景下,

    2024年02月05日
    浏览(36)
  • Mybatis原理 - 标签解析

    很多开源框架之所以能够流行起来,是因为它们解决了领域内的一些通用问题。但在实际使用这些开源框架的时候,我们都是要解决通用问题中的一个特例问题,所以这时我们就需要使用一种方式来控制开源框架的行为,这就是开源框架提供各种各样配置的核心原因之一。

    2024年01月21日
    浏览(30)
  • MyBatis:动态 SQL 标签

    MyBatis 动态 SQL 标签 ,是一组预定义的标签,用于构建动态的 SQL 语句,允许在 SQL 语句中使用条件、循环和迭代等逻辑。通过使用动态 SQL 标签,开发者可以根据不同的条件和参数生成不同的 SQL 语句,实现更加灵活的数据访问操作。但是,需要谨慎处理 SQL 注入问题,确保所

    2024年02月04日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包