因为该案例比较典型,所以记录一下,恐后期有所疑问,以便用时便于会议。

案例典型在 关联关系典型

主表一张业务模板表

  1. TABLE_NAME  COLUMN_NAME COMMENTS
  2. YMIT_BIZ_TMP    PK_ID   自增主键
  3. YMIT_BIZ_TMP    BIZ_TMP_NM  业务模板名称
  4. YMIT_BIZ_TMP    TRD_INF_ID  交易接口ID,与接口用例树关联
  5. YMIT_BIZ_TMP    TRD_INF_NM  交易接口名称
  6. YMIT_BIZ_TMP    CRT_USR_ID  LOGINCODE
  7. YMIT_BIZ_TMP    CRT_TM  创建时间

关系表一张关联关系表

  1. TABLE_NAME  COLUMN_NAME COMMENTS
  2. YMIT_BIZTMP_FLD TEMP_ID 业务模板信息表的PK_ID
  3. YMIT_BIZTMP_FLD MSG_ID  BSP对应报文ID
  4. YMIT_BIZTMP_FLD FLD_ID  公共报文字段ID

关联数据表一张 报文字段表

  1. TABLE_NAME  COLUMN_NAME COMMENTS
  2. YMIT_MSG_FLD    PK_ID   字段ID,自增主键
  3. YMIT_MSG_FLD    MSG_ID  关联报文,对应报文的NODE_ID值
  4. YMIT_MSG_FLD    FLD_NM  报文字段名称
  5. YMIT_MSG_FLD    FLD_DESC    字段描述
  6. YMIT_MSG_FLD    FLD_LEN 数据长度
  7. YMIT_MSG_FLD    IS_REQ  是否必填,1为是,0为否
  8. YMIT_MSG_FLD    DEF_VAL 默认值
  9. YMIT_MSG_FLD    FIX_VAL 修订值

一次查询,返回主表模板信息加上模板关联的所有字段信息

一  定义接手domain

  1. public class YmitBizTmpVM {
  2. private String  pkId    ;// 自增主键
  3. private String  bizTmpNm    ;// 业务模板名称
  4. private String  trdInfId    ;// 交易接口ID,与接口用例树关联
  5. private String  trdInfNm    ;// 交易接口名称
  6. private String  crtUsrId    ;// LOGINCODE
  7. private String  crtTm   ;// 创建时间
  8. private String  msgId   ;// 报文结构树上选择点的pkId
  9. private List<YmitMsgFld> ymitMsgFld; //通讯类型对应的参数

二 编写resultmap

  1. <!--模板信息 -->
  2. <resultMap id="ymitBizTmpVMMap" type="cn.com.yusys.ymit.web.rest.vm.YmitBizTmpVM">
  3. <id column="PK_ID" property="pkId" jdbcType="VARCHAR" />
  4. <result column="BIZ_TMP_NM" property="bizTmpNm" jdbcType="VARCHAR" />
  5. <result column="TRD_INF_ID" property="trdInfId" jdbcType="VARCHAR" />
  6. <result column="TRD_INF_NM" property="trdInfNm" jdbcType="VARCHAR" />
  7. <result column="CRT_USR_ID" property="crtUsrId" jdbcType="VARCHAR" />
  8. <result column="CRT_TM" property="crtTm" jdbcType="VARCHAR" />
  9. <collection property="ymitMsgFld" javaType="java.util.List" ofType="cn.com.yusys.ymit.domain.YmitMsgFld">
  10. <id column="FLD_ID" property="pkId" jdbcType="VARCHAR" />
  11. <id column="MSG_ID" property="msgId" jdbcType="VARCHAR" />
  12. <result column="FLD_NM" property="fldNm" jdbcType="VARCHAR" />
  13. <result column="FLD_DESC" property="fldDesc" jdbcType="VARCHAR" />
  14. <result column="FLD_LEN" property="fldLen" jdbcType="VARCHAR" />
  15. <result column="IS_REQ" property="isReq" jdbcType="VARCHAR" />
  16. <result column="DEF_VAL" property="defVal" jdbcType="VARCHAR" />
  17. <result column="FIX_VAL" property="fixVal" jdbcType="VARCHAR" />
  18. </collection>
  19. </resultMap>

详细解释:                    id :resultmap的标识 select语句中引用时用的,

type: 查询返回的数据类型

<id><result column>      : 都是属性的名字对应关系分别对应表中列的名字和domain中的名字

collection                        :说明这是一个一对多的关系,多就放在这里

collection中的property是接收domain中的那个多的的属性名字 javatype是多的类型

collection中的其他的和上边的一样了。

三 书写SQL

  1. <select id="getTmpVm" parameterType="java.util.Map"
  2. resultMap="ymitBizTmpVMMap">
  3. select
  4. c.PK_ID as FLD_ID,
  5. c.MSG_ID,
  6. c.FLD_NM,
  7. c.FLD_DESC,
  8. c.FLD_LEN,
  9. c.IS_REQ,
  10. c.DEF_VAL,
  11. c.FIX_VAL,
  12. a.PK_ID,
  13. a.BIZ_TMP_NM,
  14. a.TRD_INF_ID,
  15. a.TRD_INF_NM,
  16. a.CRT_USR_ID,
  17. a.CRT_TM
  18. from ymit_biz_tmp a,ymit_biztmp_fld b,ymit_msg_fld c
  19. where
  20. a.trd_Inf_Id=#{condition.trdInfId}
  21. and b.msg_id=#{condition.msgId}
  22. and
  23. a.pk_id=b.temp_id and b.msg_id =c.msg_id and b.fld_id = c.pk_id
  24. </select>

详细介绍:

因为两张表的有重名的,所以呢,在查询的时候呢,将其中的一个用as给起个暂时名字,然后对应到resultmap中的那个,

曲线救国。

然后就没有然后了。

resultmap作为mybatis中最常用最灵活最难得家伙,这样就可以用起来了。

mybatis关联查询resultmap的使用详解resultmap的更多相关文章

  1. MyBatis关联查询,表字段相同,resultMap映射问题的解决办法

    问题描述:在使用mybatis进行多表联合查询时,如果两张表中的字段名称形同,会出现无法正常映射的问题. 问题解决办法:在查询时,给重复的字段 起别名,然后在resultMap中使用别名进行映射. 给 ...

  2. mybatis关联查询基础----高级映射

    本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...

  3. MyBatis基础:MyBatis关联查询(4)

    1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...

  4. MyBatis关联查询,一对多关联查询

    实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...

  5. mybatis 关联查询实现一对多

    场景:最近接到一个项目是查询管理人集合  同时每一个管理人还存在多个出资人   要查询一个管理人列表  每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...

  6. MyBatis关联查询、多条件查询

    MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...

  7. Mybatis关联查询之二

    Mybatis关联查询之多对多 多对多 一.entity实体类 public class Student { private Integer stuid; private String stuname ...

  8. MyBatis关联查询和懒加载错误

    MyBatis关联查询和懒加载错误 今天在写项目时遇到了个BUG.先说一下背景,前端请求更新生产订单状态,后端从前端接收到生产订单ID进行查询,然后就有问题了. 先看控制台报错: org.apache ...

  9. Mybatis关联查询和数据库不一致问题分析与解决

    Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...

随机推荐

  1. 使用CXF做webservice整合现有项目的例子

    从网上看了很多CXF的资料,大部分都是单独的作为一个webservice项目,对于在现有的spring项目上提供webservice服务的例子基本没有找到. 我做的这个例子是介绍怎么把cxf整合到现有 ...

  2. 2.wireshark分析之TCP协议(一)

    (1) TCP是怎么样的协议? TCP是一种面向连接(连接导向)的.可靠的基于字节流的传输层通信协议.TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认.对失序的数据重新排 ...

  3. FPN(feature pyramid networks)

    多尺度的object detection算法:FPN(feature pyramid networks). 原来多数的object detection算法都是只采用顶层特征做预测,但我们知道低层的特征 ...

  4. CentOS 6.4下Squid代理服务器的安装与配置(转)

    add by zhj: 其实我们主要还是关注它在服务器端使用时,充当反向代理和静态数据缓存.至于普通代理和透明代理,其实相当于客户端做的事,和服务端没有什么关系.另外,Squid的缓存主要是缓存在硬盘 ...

  5. flask实现api

    https://www.cnblogs.com/vovlie/p/4178077.html from flask import Flask, jsonify app = Flask(__name__) ...

  6. input输入框type=file时accept中可以限制的文件类型(转载)

    转载自: input type=file accept中可以限制的文件类型 在上传文件的时候,需要限制指定的文件类型. <input type="file" accept=& ...

  7. PHP debug_backtrace() 函数打印调用处的调试信息

    http://php.net/manual/zh/function.debug-backtrace.php debug_backtrace (PHP 4 >= 4.3.0, PHP 5, PHP ...

  8. hadoop2.x Federation

    单Active NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,NN成为了性能的瓶颈 常用的估算公式为1G对应1百万个块,按缺省块大 ...

  9. wcf 远程服务器返回了意外响应: (413) Request Entity Too Large。

    我遇到这个问题的原因是:我使用asp.net 网站调用wcf服务后,通过方法提交数据产生的.我提交的数据是一个实体,包含很多字符串和图片格式的二进制数据超过4M 就报个错误. 后来同事帮忙解决了.他说 ...

  10. Ubuntu 添加用户到 sudoer

    一.概述 新建用户后,我们可能需要该用户能够使用一些越权的东西.sudo命令能够暂时提升该用户的权限到root,但是前提是要求该用户存在与 sudoer list 中. sudoers 存储在 /et ...