<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导致查询出来的结果和预期不一致,

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

MybatisPlus的association 属性及案例的更多相关文章

  1. 1.4.2 solr字段类型--(1.4.2.7)字段属性使用案例

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  2. mybatis框架-使用resultMap实现高级结果映射,association属性

    需求:查询数特定角色下的所有用户列表 首先需要在在User类中引用Role类,因为引用了复杂的数据类型,所以要使用association属性进行映射,其实起主要作用的还是resultMap属性. /* ...

  3. HTML5新标签与特性---新表单+新属性----综合案例1

    HTML5新标签与特性 兼容性问题 (ie9 以上的版本) 文档类型设定 document HTML: sublime 输入 html:4s XHTML: sublime 输入 html:xt HTM ...

  4. 【Web】block、inline、inline-block元素与background属性概述(案例实现社交账号注册按钮效果)

    步骤三:社交账号注册按钮效果 文章目录 步骤三:社交账号注册按钮效果 案例的演示与分析 CSS属性与HTML标签 块级元素 内联元素 行内块级元素 CSS的display属性 CSS中的背景图片属性 ...

  5. 【已解决】SpringBoot + Mybatis-plus 实体类属性注解 @TableField 无法获取到数据库值(属性变量名带下划线)

    问题描述: 实体类变量的命名格式 如果采用的是 XX_XX带下划线的形式,那么在低版本的mybatis-plus是不支持和数据库映射的. 如果是单个单词不存在这个问题,如果出现多个单词,尽量采用驼峰式 ...

  6. tomcat配置context的crossContext属性应用案例

    在tomcat下,context元素有一个crossContext属性,如果配置为true,则可以实现在同一个tomcat下的多个web应用之间实现ServletContext对象访问.该属性主要用于 ...

  7. HTML5基础-新增标签+新增属性+布局案例

    html5中常用的结构标签 article 文章 header 头部 nav 导航 section 区域 aside 侧边栏 hgroup 区块的相关信息 figure 定义一组内容及标题 figca ...

  8. javascrip总结42:属性操作案例: 点击盒子,改变盒子的位置和背景颜色

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  9. Android属性动画之ObjectAnimator

    相信对于Android初学者,对于Android中的动画效果一定很感兴趣,今天为大家总结一下刚刚学到的属性动画案例. 首先和一般的Android应用一样,我们先建一个工程,为了方便,我们的布局文件中就 ...

  10. powerdsigner Association Multiplicity

    这一篇來告诉一个不容易分辨的关系图式:Association(结合)的各种類型,除了了解它的涵义 外,也让各位可以看图說故事,知道它背后所要表达的意义. Association结合 Associati ...

随机推荐

  1. 解决:EXP-00003: 未找到段 (0,0) 的存储定义报错

    问题说明 DB服务器oracle版本:11.2.0.4.0 最近在客户端用exp命令导出部分表时报错,如题.搜索了一下,找到以下解决方案: 问题原因 Oracle 11g 有一个参数deferred_ ...

  2. pikachu sql inject 时间盲注

    输入框输入任何消息返回内容都是一样的 那么可以考虑插入sleep函数来观察响应时长来判断是否有注入点 输入 kobe' and sleep(3) # 发现页面缓冲3秒才响应,说明确实是注入点 通过if ...

  3. 掌握C语言指针,轻松解锁代码高效性与灵活性

    欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 指针与地址 1.1 概念 我们都知道计算机的数据必须存储在内存里,为了正确地访问这些 ...

  4. 程序员应具备的PS基本技能(三):程序员使用PSD源文件切图

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  5. 【LeetCode二叉树#19】有序数组转换为二叉搜索树(构造二叉树)

    将有序数组转换为二叉搜索树 力扣题目链接(opens new window) 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个 ...

  6. ThreadPoolExecutor和Executors的区别

    Executors创建的线程有两类 newFixedThreadPool和newSingleThreadExecutor,队列数量弹性,创建的线程的队列最大值为INTEGER.max容易造成OOM n ...

  7. 【Azure Key Vault】客户端获取Key Vault机密信息全部失败问题分析

    问题描述 在应用中获取存储在Azure Key Vault的机密信息,全部失败. 报错日志内容如下: [reactor-http-epoll-4] [reactor.netty.http.client ...

  8. vue使用cordova的大坑!!

    额,前段时间用 cordova 包了个 vue 项目,跑真机,完美.跑公司安卓系统虚拟机,垮. 原因找了很久,最后发现是路由的问题,使用了 createWebHistory ,去掉了 hash ,虽然 ...

  9. VSCode 配置 Spring Boot 项目开发环境

    神器IDEA在升级到2023之后越发卡顿, EDU邮箱也不能用了, 照现在这个JDK版本的升级速度, 神器不升级也不行, 需要开始物色替代品. 其它IDE我用得少, VSCode还是比较熟悉的, 可以 ...

  10. windows10 中为文件添加让自己可以使用查看、修改、运行的权限

    在Win10中添加权限的方法 前一段时间重装了系统,然后,突然间就因为权限原因没法查看一些文件了.所以就想办法添加权限.尝试很多次后终于成功了,这篇文章记录一下如何为自己添加权限. 选中需要添加权限的 ...