MybatisPlus的association 属性及案例

发布时间 2023-08-04 15:53:21作者: 不爱学习的摆烂王
   <select id="getMatUnitList" resultMap="matUnitVOMap">
        SELECT
        a.CODE,
        a.min_pack_unit,
        a.tenant_id,
        c.item_text unitName
        FROM
        mdm_mat a
        LEFT JOIN sys_dict_item c ON a.unit = c.item_value
        AND c.dict_code = 'unit'
        <where>
            <if test="codes != null and codes.size()>0">
                a.code IN
                <foreach item="item" index="index" collection="codes" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
        </where>
    </select>

SQL2:

    <resultMap id="matUnitVOMap" type="com.donger.mom.mdm.app.material.dto.MatUnitVO">
        <result property="code" column="code"/>
        <result property="minPackUnit" column="minPackUnit"/>
        <result property="unitName" column="unitName"/>
        <result property="unitByManufacture" column="unitByManufacture"/>
        <result property="unitByStock" column="unitByStock"/>
        <result property="unitByPurchase" column="unitByPurchase"/>
        <result property="unitByRetail" column="unitByRetail"/>
        <result property="unitBySale" column="unitBySale"/>
        <result property="tenantId" column="tenant_id"/>
        <association property="mdmMatRaw" javaType="com.donger.mom.mdm.infrastructure.mysql.entity.MdmMat"
                     select="selectMdmMatRaw" column="{code=code,tenantId=tenant_id}"/>
        <collection property="ratio" ofType="com.donger.mom.mdm.infrastructure.mysql.entity.MdmMatUnit"
                    select="selectRatioList" column="code">

        </collection>
    </resultMap>

SQL3:

 <select id="selectMdmMatRaw" resultType="com.donger.mom.mdm.infrastructure.mysql.entity.MdmMat">
        SELECT raw.`code`,
               raw.`name`,
               cat.`name`  category,
               b.item_text unit,
               d.item_text typeName,
               raw.brand,
               raw.invoice,
               raw.specification,
               raw.min_pack_unit,
               raw.min_safe_stock,
               raw.max_safe_stock,
               raw.is_fifo,
               raw.pricing_method,
               raw.remark,
               raw.shelf_life,
               raw.lead_time,
               raw.create_by,
               raw.create_by_name,
               raw.create_time,
               raw.update_by,
               raw.update_by_name,
               raw.update_time,
               raw.safety_stock_alarm,
               raw.expiry_date_alert,
               raw.sluggish_material_alarm,
               raw.push_flag,
               raw.push_time,
               raw.is_batch
        FROM mdm_mat raw
                 LEFT JOIN mdm_mat_cat cat on raw.category = cat.id
                 LEFT JOIN sys_dict_item b ON raw.unit = b.item_value and b.dict_code = 'unit'
                 left join sys_dict_item d on raw.material_type = d.item_value and d.dict_code = 'matClass'
          where raw.code = #{code} and raw.tenant_id = #{tenantId}
    </select>

在这里我们要知道的是 association 的用法以及传递多个参数的写法,我这里遇到的问题是多租户要求时,我没有往里面传递租户ID导致查询出来的结果和预期不一致,

这里用到了多个参数的传递。