MybatisPlus的association 属性及案例
<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导致查询出来的结果和预期不一致,
这里用到了多个参数的传递。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了