先说下坑,比如数据库的字段是 DW_ID  ,用generator讲mybatis自动转换的时候,会省略下表_变成dwId,所以我们之后自己手动设计的时候也尽量换成dwId;

generate的mybatis不是重新生成而是覆盖原来文字

Mybatis的级联

<resultMap id="BaseResultMap" type="com.ylzinfo.apps.rsdl.domain.RSDL_SHXX">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="DW_ID" jdbcType="VARCHAR" property="dwId" />
<result column="DY_TYPE" jdbcType="VARCHAR" property="dyType" />
<result column="DWNAME" jdbcType="VARCHAR" property="dwname" />
<result column="ZJHM" jdbcType="VARCHAR" property="zjhm" />
<result column="SBSJ" jdbcType="VARCHAR" property="sbsj" />
<result column="YDLJG_ID" jdbcType="VARCHAR" property="ydljgId" />
<result column="YDLSTATE" jdbcType="VARCHAR" property="ydlstate" />
<result column="YDLOPNION" jdbcType="VARCHAR" property="ydlopnion" />
<result column="XDLJG_ID" jdbcType="VARCHAR" property="xdljgId" />
<result column="XDLSTATE" jdbcType="VARCHAR" property="xdlstate" />
<result column="XDLOPNION" jdbcType="VARCHAR" property="xdlopnion" />
<result column="JYSTATE" jdbcType="VARCHAR" property="jystate" />
<result column="JYREASON" jdbcType="VARCHAR" property="jyreason" />
<result column="JYOPNION" jdbcType="VARCHAR" property="jyopnion" />
<result column="SCSQ" jdbcType="VARCHAR" property="scsq" />
<result column="YLZD1" jdbcType="VARCHAR" property="ylzd1" />
<result column="YLZD2" jdbcType="VARCHAR" property="ylzd2" />
<result column="YLZD3" jdbcType="VARCHAR" property="ylzd3" />
<result column="YLZD4" jdbcType="VARCHAR" property="ylzd4" />
<result column="YLZD5" jdbcType="VARCHAR" property="ylzd5" />
<result column="SYS_CREATE_TIME" jdbcType="VARCHAR" property="sysCreateTime" />
<result column="SYS_CREATE_USER" jdbcType="VARCHAR" property="sysCreateUser" />
<result column="SYS_UPDATE_TIME" jdbcType="VARCHAR" property="sysUpdateTime" />
<result column="SYS_UPDATE_USER" jdbcType="VARCHAR" property="sysUpdateUser" />
<association column="YDLJG_ID" select="getYdwjg" property="ydwjg"/>
<association column="XDLJG_ID" select="getXdwjg" property="xdwjg"/> <result column="SYS_CREATE_USER" jdbcType="VARCHAR" property="sysCreateUser" />
<result column="SYS_UPDATE_TIME" jdbcType="VARCHAR" property="sysUpdateTime" />
<result column="SYS_UPDATE_USER" jdbcType="VARCHAR" property="sysUpdateUser" />
<association column="YDLJG_ID" select="getYdwjg" property="ydwjg"/>
</resultMap>
<sql id="Base_Column_List">
ID, DW_ID, DY_TYPE, DWNAME, ZJHM, SBSJ, YDLJG_ID, YDLSTATE, YDLOPNION, XDLJG_ID,
XDLSTATE, XDLOPNION, JYSTATE, JYREASON, JYOPNION, SCSQ, YLZD1, YLZD2, YLZD3, YLZD4,
YLZD5, SYS_CREATE_TIME, SYS_CREATE_USER, SYS_UPDATE_TIME, SYS_UPDATE_USER
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from RSDL_SHXX
where ID = #{id,jdbcType=VARCHAR}
</select>
<select id="getYdwjg" parameterType="java.lang.String" resultType="com.ylzinfo.apps.unit.domain.UnitBaseInfo">
SELECT NAME FROM Unit_Baseinfo WHERE id=#{ydwjg,jdbcType=VARCHAR}
</select> <select id="selectByDwId" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from RSDL_SHXX
where DW_ID = #{dwId,jdbcType=VARCHAR}
</select>

里面是级联部分代码,其中resultMap用来映射实体类对应的字段,用于返回数据,其中如果原本的实体类里面又包含实体类,我们就可以使用级联。在resultMap里面跟上级联实体类的名字,后面加入方法,

之后专门添加对应的select进行级联。

因为上个方法在项目中不知道为什么原因,如果名字一样就只能显示一个名字,而且如果只是要名字的话却封装一个对象,有点大材小用,故用到JOIN 来替换。

<select id="queryAndName" parameterType="java.lang.String"
resultMap="BaseResultMap2">
select r.id as ID,
r.dw_id as DW_ID,
r.dwname as DWNAME,
r.zjhm as ZJHM,
r.sbsj as SBSJ,
r.ydljg_id as YDLJG_ID,
r.ydlstate as YDLSTATE,
r.xdljg_id as XDLJG_ID,
r.xdlstate as XDLSTATE,
r.ylzd1 as YLZD1,
u1.dwname as YDLJG_NAME,
u2.dwname as XDLJG_NAME
from RSDL_SHXX r
left outer join RSDL_DLJG u1 on r.ydljg_id = u1.dwid
left outer join RSDL_DLJG u2 on r.xdljg_id = u2.dwid
where 1=1
<if test="dwId != null and dwId != ''">
and DW_ID like CONCAT(CONCAT('%',#{dwId}),'%')
</if>
<if test="dyType != null and dyType != ''">
and DY_TYPE like CONCAT(CONCAT('%',#{dyType}),'%')
</if>
<if test="dwname != null and dwname != ''">
and DWNAME like CONCAT(CONCAT('%',#{dwname}),'%')
</if>
<if test="zjhm != null and zjhm != ''">
and ZJHM like CONCAT(CONCAT('%',#{zjhm}),'%')
</if>
<if test="sbsj != null and sbsj != ''">
and SBSJ like CONCAT(CONCAT('%',#{sbsj}),'%')
</if>
<if test="ydljgId != null and ydljgId != ''">
and YDLJG_ID like CONCAT(CONCAT('%',#{ydljgId}),'%')
</if>
<if test="ydlstate != null and ydlstate != ''">
and YDLSTATE like CONCAT(CONCAT('%',#{ydlstate}),'%')
</if>
<if test="ydlopnion != null and ydlopnion != ''">
and YDLOPNION like CONCAT(CONCAT('%',#{ydlopnion}),'%')
</if>
<if test="xdljgId != null and xdljgId != ''">
and XDLJG_ID like CONCAT(CONCAT('%',#{xdljgId}),'%')
</if>
<if test="xdlstate != null and xdlstate != ''">
and XDLSTATE like CONCAT(CONCAT('%',#{xdlstate}),'%')
</if>
<if test="ydlopnion != null and ydlopnion != ''">
and XDLOPNION like CONCAT(CONCAT('%',#{ydlopnion}),'%')
</if>
<if test="jystate != null and jystate != ''">
and JYSTATE like CONCAT(CONCAT('%',#{jystate}),'%')
</if>
<if test="jyreason != null and jyreason != ''">
and JYREASON like CONCAT(CONCAT('%',#{jyreason}),'%')
</if>
<if test="jyopnion != null and jyopnion != ''">
and JYOPNION like CONCAT(CONCAT('%',#{jyopnion}),'%')
</if>
<if test="ylzd1 != null and ylzd1 != ''">
and YLZD1 like CONCAT(CONCAT('%',#{ylzd1}),'%')
</if>
<if test="ylzd2 != null and ylzd2 != ''">
and YLZD2 like CONCAT(CONCAT('%',#{ylzd2}),'%')
</if>
<if test="ylzd3 != null and ylzd3 != ''">
and YLZD3 like CONCAT(CONCAT('%',#{ylzd3}),'%')
</if>
<if test="ylzd4 != null and ylzd4 != ''">
and YLZD4 like CONCAT(CONCAT('%',#{ylzd4}),'%')
</if>
<if test="ylzd5 != null and ylzd5 != ''">
and YLZD5 like CONCAT(CONCAT('%',#{ylzd5}),'%')
</if>
order by r.sbsj desc
<!-- select <include refid="Base_Column_List" /> from RSDL_SHXX where DW_ID
= #{dwId,jdbcType=VARCHAR} order by sbsj desc -->
</select>

resultmap和java实体类

<resultMap id="BaseResultMap2" type="com.ylzinfo.apps.rsdl.domain.RSDL_SHXX">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="DW_ID" jdbcType="VARCHAR" property="dwId" />
<result column="DY_TYPE" jdbcType="VARCHAR" property="dyType" />
<result column="DWNAME" jdbcType="VARCHAR" property="dwname" />
<result column="ZJHM" jdbcType="VARCHAR" property="zjhm" />
<result column="SBSJ" jdbcType="VARCHAR" property="sbsj" />
<result column="YDLJG_ID" jdbcType="VARCHAR" property="ydljgId" />
<result column="YDLSTATE" jdbcType="VARCHAR" property="ydlstate" />
<result column="YDLOPNION" jdbcType="VARCHAR" property="ydlopnion" />
<result column="XDLJG_ID" jdbcType="VARCHAR" property="xdljgId" />
<result column="XDLSTATE" jdbcType="VARCHAR" property="xdlstate" />
<result column="XDLOPNION" jdbcType="VARCHAR" property="xdlopnion" />
<result column="JYSTATE" jdbcType="VARCHAR" property="jystate" />
<result column="JYREASON" jdbcType="VARCHAR" property="jyreason" />
<result column="JYOPNION" jdbcType="VARCHAR" property="jyopnion" />
<result column="SCSQ" jdbcType="VARCHAR" property="scsq" />
<result column="YLZD1" jdbcType="VARCHAR" property="ylzd1" />
<result column="YLZD2" jdbcType="VARCHAR" property="ylzd2" />
<result column="YLZD3" jdbcType="VARCHAR" property="ylzd3" />
<result column="YLZD4" jdbcType="VARCHAR" property="ylzd4" />
<result column="YLZD5" jdbcType="VARCHAR" property="ylzd5" />
<result column="SYS_CREATE_TIME" jdbcType="VARCHAR" property="sysCreateTime" />
<result column="SYS_CREATE_USER" jdbcType="VARCHAR" property="sysCreateUser" />
<result column="SYS_UPDATE_TIME" jdbcType="VARCHAR" property="sysUpdateTime" />
<result column="SYS_UPDATE_USER" jdbcType="VARCHAR" property="sysUpdateUser" />
<result column="YDLJG_NAME" jdbcType="VARCHAR" property="ydwjg" />
<result column="XDLJG_NAME" jdbcType="VARCHAR" property="xdwjg" />
</resultMap>
 /**
* 创建时间,一旦创建无法改变。
*/
private String sysCreateTime; /**
* 创建用户,一旦创建无法改变。
*/
private String sysCreateUser; /**
* 更改时间
*/
private String sysUpdateTime; /**
* 更改用户
*/
private String sysUpdateUser; /**
* 原单位机构,用来取名字。
*/
private String ydwjg; /**
* 新单位机构,用来取名字。
*/
private String xdwjg;

Mybatis级联,使用JOIN和Associa,以及一些ID覆盖和自动变换。的更多相关文章

  1. mybatis 级联

    级联是一个数据库实体的概念.一对多的级联,一对多的级联,在MyBatis中还有一种被称为鉴别器的级联,它是一种可以选择具体实现类的级联. 级联不是必须的,级联的好处是获取关联数据十分便捷,但是级联过多 ...

  2. mybatis ---- 级联查询 一对多 (集合映射)

    关联有嵌套查询和嵌套结果两种方式,本文是按照嵌套结果这种方式来说明的 上一章介绍了多对一的关系,用到了<association></association>,这是一个复杂类型的 ...

  3. (三)mybatis级联的实现

    mybatis级联的实现 开篇         级联有三种对应关系: 1.一对一(association):如学号与学生  2.一对多(collection):如角色与用户  3.多对多(discri ...

  4. mybatis级联查询

    1.定义四个实体.User   Role    Privilege   Resource,他们之间的对于关系为 2.需求:我通过用户名username查找出该用户对应的角色以及角色对应的权限和资源 3 ...

  5. 【mybatis】mybatis中insert操作,返回自增id

    需求是这样的: mybatis中insert操作,返回自增id,因为这个自增id需要给后续业务用到. 原本是这样的: 将insert语句传入,正常执行insert操作,返回int永远是 0[失败] 或 ...

  6. mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?

    mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...

  7. mybatis的插入与批量插入的返回ID的原理

    目录 背景 底层调用方法 单个对象插入 列表批量插入 完成 背景 最近正在整理之前基于mybatis的半ORM框架.原本的框架底层类ORM操作是通过StringBuilder的append拼接的,这次 ...

  8. Mybatis 级联查询 (一对多 )

    后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...

  9. Mybatis级联:关联、集合和鉴别器的使用

    Mybatis中级联有关联(association).集合(collection).鉴别器(discriminator)三种.其中,association对应一对一关系.collection对应一对多 ...

随机推荐

  1. hdu-4632 Palindrome subsequence (回文子序列计数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632 问题要求回答一串字符串中回文子序列的数量,例如acbca就有 a,c,b,c,a,cc,aa,a ...

  2. 从早期 Spring Boot 版本升级

    如果你现在正在从早期的 Spring Boot 版本进行升级的话,请访问 “migration guide” on the project wiki 页面,这个页面提供了有关升级的详细指南.同时也请查 ...

  3. JS onclick事件获取空间value

    1. HTML onclick = btnAction(this.value) 2. JS btnAction(v){ alert(v) }

  4. 『TensorFlow × MXNet』SSD项目复现经验

    『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍 『TensorFlow』SSD源码学习_其二:基于VGG的SSD网络前向架构 『TensorFlow』SSD源码学习_其三:锚框生 ...

  5. 【IDEA】【7】Git更新及提交

    如果是Git管理的项目,顶部会出现这样的按钮 绿色代表commit到本地 蓝色代表update最新代码 Push:推送到远程服务器:右键项目->Git->Repository->Pu ...

  6. 设备指纹(Device Fingerprinting)是什么?

    简单来讲,设备指纹是指可以用于标识出该设备的设备特征或者独特的设备标识.设备指纹因子通常包括计算机的操作系统类型,安装的各种插件,浏览器的语言设置及其时区 .设备的硬件ID,手机的IMEI,电脑的网卡 ...

  7. 基本数据类型list,tuple

    一. 列表 1. 列表是一个可变的数据类型 列表由[]来表示, 每一项元素使用逗号隔开. 列表什么都能装. 能装对象的对象. 列表可以装大量的数据 列表是有序的 2. 列表的索引和切片 列表和字符串一 ...

  8. [LeetCode] 20. Valid Parentheses ☆

    转载:https://leetcode.windliang.cc/leetCode-20-Valid%20Parentheses.html 描述 Given a string containing j ...

  9. Apache支持TRACE请求漏洞处理方案

    trace和get一样是http的一种请求方法,该方法的作用是回显收到的客户端请求,一般用于测试服务器运行状态是否正常. 该方法结合浏览器漏洞可能造成跨站脚本攻击.修复方法如下: 编缉/etc/htt ...

  10. 从概率图模型pgm到rbm

    有向图模型:directed acyclic graph  DAG  贝叶斯网络 对称的,无向图, UGM: undirected graphic model  UGM, 更有名的名称是MRF,mar ...