mybatis关联查询resultmap的使用详解resultmap
因为该案例比较典型,所以记录一下,恐后期有所疑问,以便用时便于会议。
案例典型在 关联关系典型
主表一张业务模板表
- TABLE_NAME COLUMN_NAME COMMENTS
- YMIT_BIZ_TMP PK_ID 自增主键
- YMIT_BIZ_TMP BIZ_TMP_NM 业务模板名称
- YMIT_BIZ_TMP TRD_INF_ID 交易接口ID,与接口用例树关联
- YMIT_BIZ_TMP TRD_INF_NM 交易接口名称
- YMIT_BIZ_TMP CRT_USR_ID LOGINCODE
- YMIT_BIZ_TMP CRT_TM 创建时间
关系表一张关联关系表
- TABLE_NAME COLUMN_NAME COMMENTS
- YMIT_BIZTMP_FLD TEMP_ID 业务模板信息表的PK_ID
- YMIT_BIZTMP_FLD MSG_ID BSP对应报文ID
- YMIT_BIZTMP_FLD FLD_ID 公共报文字段ID
关联数据表一张 报文字段表
- TABLE_NAME COLUMN_NAME COMMENTS
- YMIT_MSG_FLD PK_ID 字段ID,自增主键
- YMIT_MSG_FLD MSG_ID 关联报文,对应报文的NODE_ID值
- YMIT_MSG_FLD FLD_NM 报文字段名称
- YMIT_MSG_FLD FLD_DESC 字段描述
- YMIT_MSG_FLD FLD_LEN 数据长度
- YMIT_MSG_FLD IS_REQ 是否必填,1为是,0为否
- YMIT_MSG_FLD DEF_VAL 默认值
- YMIT_MSG_FLD FIX_VAL 修订值
一次查询,返回主表模板信息加上模板关联的所有字段信息
一 定义接手domain
- public class YmitBizTmpVM {
- private String pkId ;// 自增主键
- private String bizTmpNm ;// 业务模板名称
- private String trdInfId ;// 交易接口ID,与接口用例树关联
- private String trdInfNm ;// 交易接口名称
- private String crtUsrId ;// LOGINCODE
- private String crtTm ;// 创建时间
- private String msgId ;// 报文结构树上选择点的pkId
- private List<YmitMsgFld> ymitMsgFld; //通讯类型对应的参数
二 编写resultmap
- <!--模板信息 -->
- <resultMap id="ymitBizTmpVMMap" type="cn.com.yusys.ymit.web.rest.vm.YmitBizTmpVM">
- <id column="PK_ID" property="pkId" jdbcType="VARCHAR" />
- <result column="BIZ_TMP_NM" property="bizTmpNm" jdbcType="VARCHAR" />
- <result column="TRD_INF_ID" property="trdInfId" jdbcType="VARCHAR" />
- <result column="TRD_INF_NM" property="trdInfNm" jdbcType="VARCHAR" />
- <result column="CRT_USR_ID" property="crtUsrId" jdbcType="VARCHAR" />
- <result column="CRT_TM" property="crtTm" jdbcType="VARCHAR" />
- <collection property="ymitMsgFld" javaType="java.util.List" ofType="cn.com.yusys.ymit.domain.YmitMsgFld">
- <id column="FLD_ID" property="pkId" jdbcType="VARCHAR" />
- <id column="MSG_ID" property="msgId" jdbcType="VARCHAR" />
- <result column="FLD_NM" property="fldNm" jdbcType="VARCHAR" />
- <result column="FLD_DESC" property="fldDesc" jdbcType="VARCHAR" />
- <result column="FLD_LEN" property="fldLen" jdbcType="VARCHAR" />
- <result column="IS_REQ" property="isReq" jdbcType="VARCHAR" />
- <result column="DEF_VAL" property="defVal" jdbcType="VARCHAR" />
- <result column="FIX_VAL" property="fixVal" jdbcType="VARCHAR" />
- </collection>
- </resultMap>
详细解释: id :resultmap的标识 select语句中引用时用的,
type: 查询返回的数据类型
<id><result column> : 都是属性的名字对应关系分别对应表中列的名字和domain中的名字
collection :说明这是一个一对多的关系,多就放在这里
collection中的property是接收domain中的那个多的的属性名字 javatype是多的类型
collection中的其他的和上边的一样了。
三 书写SQL
- <select id="getTmpVm" parameterType="java.util.Map"
- resultMap="ymitBizTmpVMMap">
- select
- c.PK_ID as FLD_ID,
- c.MSG_ID,
- c.FLD_NM,
- c.FLD_DESC,
- c.FLD_LEN,
- c.IS_REQ,
- c.DEF_VAL,
- c.FIX_VAL,
- a.PK_ID,
- a.BIZ_TMP_NM,
- a.TRD_INF_ID,
- a.TRD_INF_NM,
- a.CRT_USR_ID,
- a.CRT_TM
- from ymit_biz_tmp a,ymit_biztmp_fld b,ymit_msg_fld c
- where
- a.trd_Inf_Id=#{condition.trdInfId}
- and b.msg_id=#{condition.msgId}
- and
- a.pk_id=b.temp_id and b.msg_id =c.msg_id and b.fld_id = c.pk_id
- </select>
详细介绍:
因为两张表的有重名的,所以呢,在查询的时候呢,将其中的一个用as给起个暂时名字,然后对应到resultmap中的那个,
曲线救国。
然后就没有然后了。
resultmap作为mybatis中最常用最灵活最难得家伙,这样就可以用起来了。
mybatis关联查询resultmap的使用详解resultmap的更多相关文章
- MyBatis关联查询,表字段相同,resultMap映射问题的解决办法
问题描述:在使用mybatis进行多表联合查询时,如果两张表中的字段名称形同,会出现无法正常映射的问题. 问题解决办法:在查询时,给重复的字段 起别名,然后在resultMap中使用别名进行映射. 给 ...
- mybatis关联查询基础----高级映射
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...
- MyBatis基础:MyBatis关联查询(4)
1. MyBatis关联查询简介 MyBatis中级联分为3中:association.collection及discriminator. ◊ association:一对一关联 ◊ collecti ...
- MyBatis关联查询,一对多关联查询
实体关系图,一个国家对应多个城市 一对多关联查询可用三种方式实现: 单步查询,利用collection标签为级联属性赋值: 分步查询: 利用association标签进行分步查询: 利用collect ...
- mybatis 关联查询实现一对多
场景:最近接到一个项目是查询管理人集合 同时每一个管理人还存在多个出资人 要查询一个管理人列表 每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...
- MyBatis关联查询、多条件查询
MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...
- Mybatis关联查询之二
Mybatis关联查询之多对多 多对多 一.entity实体类 public class Student { private Integer stuid; private String stuname ...
- MyBatis关联查询和懒加载错误
MyBatis关联查询和懒加载错误 今天在写项目时遇到了个BUG.先说一下背景,前端请求更新生产订单状态,后端从前端接收到生产订单ID进行查询,然后就有问题了. 先看控制台报错: org.apache ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
随机推荐
- 使用Dataset构建数据到lgb中
训练数据要放到Dataset中供lgb使用,构建数据如下: import lightgbm as lgb import numpy as np # 训练数据,500个样本,10个维度 train_da ...
- SVN库迁移整理方法----官方推荐方式
以下是subversion官方推荐的备份方式. 关闭所有运行的进程,并确认没有程序在访问存储库(如 httpd.svnserve 或本地用户在直接访问). 备份svn存储库 #压缩备份 svnadmi ...
- python 面向对象· self 讲解
self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...
- SpringData_PagingAndSortingRepository接口
该接口提供了分页与排序功能 Iterable<T> findAll(Sort sort); //排序 Page<T> findAll(Pageable pageable); / ...
- c#将十进制转64进制
//由于用于文件命名,所以将64位中的+转换为=,/转换为_ static char[] digits = { '0' , '1' , '2' , '3' , '4' , ' ...
- http之工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包含请求的方法.URL. ...
- Redis 资料整理
Redis is an open source, BSD licensed, advanced key-value store. Redis is often referred to as a dat ...
- python webdriver api-操作富文本框
操作富文本框-就是邮件正文部分,可以选字体啥的 第一种方式: 一般都是在iframe里,要切进去,一般是”html/body”,编辑之后,再切出来,然后再send_keys就完事儿 #encoding ...
- InFusion错误类型分析
1 God Class 1.1 特征 上帝类通常过多的操纵其他类的数据,从而破坏了类的封装性.上帝类从其他类中获得功能,同时增加了自身的耦合性,通常会导致自己具有规模过大和较高的复 ...
- Core Java 4
p272~p273 1.除捕获异常外的另一种异常处理方式:将异常继续传递给方法调用者. 即:在方法首部添加throws说明符号,取代 try catch语句. 对于方法的调用者而言:要么处理异常,要么 ...