La diferencia entre etiquetas de colección y asociación en Mybatis

<collection>y son etiquetas utilizadas para definir relaciones de mapeo en MyBatis, sus diferencias son las siguientes:<association>

  1. Tipo de objeto de destino:

    • <collection>Se utiliza para representar atributos de colección, es decir, un atributo corresponde a múltiples objetos asociados.
    • <association>Se utiliza para representar atributos asociados, es decir, un atributo corresponde a un objeto asociado.
  2. Procesamiento de relaciones:

    • <collection>Se utiliza para manejar relaciones de uno a muchos o de muchos a muchos, donde el atributo de colección contendrá una colección de objetos asociados correspondientes.
    • <association>Se utiliza para manejar relaciones uno a uno o muchos a uno, donde los atributos de la relación contendrán los objetos de relación correspondientes.
  3. Método de consulta SQL:

    • <collection>Generalmente es necesario ejecutar consultas SQL adicionales para obtener los datos de los objetos relacionados, generalmente usando una cláusula de selección para especificar la declaración de consulta.
    • <association>Por lo general, la operación de unión se utiliza en la declaración de consulta del objeto relacionado para consultar los datos del objeto relacionado junto con los datos del objeto actual.
  4. Método de mapeo:

    • <collection>Las definiciones anidadas se utilizan a menudo en asignaciones de resultados <resultMap>para asignar propiedades de objetos asociados.
    • <association>Las definiciones de etiquetas se utilizan normalmente en asignaciones de resultados <result>para asignar propiedades de objetos asociados.

En resumen, <collection>se usa para representar atributos conjuntos de uno a muchos o de muchos a muchos y requiere ejecutar consultas SQL adicionales para obtener los datos de los objetos asociados, mientras que se usa para representar <association>uno a uno o muchos. atributos asociados -a uno y utiliza la operación de unión.Consulta los datos del objeto asociado junto con el objeto actual.

Ejemplo:

expandir:

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

Supongo que te gusta

Origin blog.csdn.net/XikYu/article/details/132761255
Recomendado
Clasificación