一、父查询BaseChildResultMap:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.dayhr.web.module.hr.td.elearn.mapper.TrainerMapper" > <!-- 表中字段 -->
<resultMap id="BaseResultMap" type="com.dayhr.web.module.hr.td.elearn.model.Trainer" >
<id column="id" property="id" jdbcType="CHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="title" property="title" jdbcType="VARCHAR" />
<result column="recommend" property="recommend" jdbcType="INTEGER" />
<result column="trainer_type_id" property="trainerTypeId" jdbcType="CHAR" />
<result column="phone" property="phone" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="address" property="address" jdbcType="VARCHAR" />
<result column="pro_field" property="proField" jdbcType="VARCHAR" />
<result column="intro" property="intro" jdbcType="VARCHAR" />
<result column="head_img" property="headImg" jdbcType="VARCHAR" />
<result column="labels" property="labels" jdbcType="VARCHAR" />
<result column="corp_id" property="corpId" jdbcType="INTEGER" />
<result column="creater_id" property="createrId" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="modifier_id" property="modifierId" jdbcType="INTEGER" />
<result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP" />
</resultMap> <!-- 返回页面Bean -->
<resultMap id="BaseResultRespMap" type="com.dayhr.web.module.hr.td.elearn.response.TrainerResp" >
<id column="id" property="id" jdbcType="CHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="title" property="title" jdbcType="VARCHAR" />
<result column="recommend" property="recommend" jdbcType="INTEGER" />
<result column="trainer_type_id" property="trainerTypeId" jdbcType="CHAR" />
<result column="phone" property="phone" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="address" property="address" jdbcType="VARCHAR" />
<result column="pro_field" property="proField" jdbcType="VARCHAR" />
<result column="intro" property="intro" jdbcType="VARCHAR" />
<result column="head_img" property="headImg" jdbcType="VARCHAR" />
<result column="labels" property="labels" jdbcType="VARCHAR" />
<result column="corp_id" property="corpId" jdbcType="INTEGER" />
<result column="creater_id" property="createrId" jdbcType="INTEGER" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="modifier_id" property="modifierId" jdbcType="INTEGER" />
<result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP" /> <result column="trainerTypeName" property="trainerTypeName" />
<result column="trainerLabels" property="trainerLabels" />
</resultMap> <!-- 子查询 -->
<resultMap id="BaseChildResultMap" type="com.dayhr.web.module.hr.td.elearn.response.TrainerResp" extends="BaseResultRespMap">
<collection property="trainerLabels"
ofType="com.dayhr.web.module.hr.td.elearn.response.TrainerLabelResp"
select="com.dayhr.web.module.hr.td.elearn.mapper.TrainerLabelMapper.selecLabels" column="labels">
</collection>
</resultMap> <!-- 表中基础字段 -->
<sql id="Base_Column_List">
t.id, t.name, t.title, t.recommend, t.trainer_type_id, t1.name AS trainerTypeName,
t.phone, t.email, t.address, t.pro_field, t.intro, t.head_img, t.labels, t.corp_id,
t.creater_id, t.create_time, t.modifier_id, t.modify_time
</sql> <!-- 查询条件 -->
<sql id="select_Where_Clause">
<where>
1=1
<if test="id != null and id != ''">
AND t.id = #{id }
</if>
<if test="name != null and name != ''">
AND t.name like CONCAT('%',#{name },'%' )
</if>
<if test="corpId != null and corpId != ''">
AND corp_id = #{corpId }
</if>
<if test="trainerTypeId != null and trainerTypeId != ''">
AND t.trainer_type_id = #{trainerTypeId }
</if>
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy } ${sortType }
</if>
</where>
</sql> <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from t_hr_td_trainer
where id = #{id }
</delete> <insert id="insert" parameterType="com.dayhr.web.module.hr.td.elearn.model.Trainer" useGeneratedKeys="true" keyProperty="id">
insert into t_hr_td_trainer (id, name, title,
recommend, trainer_type_id, phone,
email, address, pro_field,
intro, head_img, labels,
corp_id, creater_id, create_time,
modifier_id, modify_time)
values (#{id,jdbcType=CHAR}, #{name,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
#{recommend,jdbcType=INTEGER}, #{trainerTypeId,jdbcType=CHAR}, #{phone,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, #{proField,jdbcType=VARCHAR},
#{intro,jdbcType=VARCHAR}, #{headImg,jdbcType=VARCHAR}, #{labels,jdbcType=VARCHAR},
#{corpId,jdbcType=INTEGER}, #{createrId,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP},
#{modifierId,jdbcType=INTEGER}, #{modifyTime,jdbcType=TIMESTAMP})
</insert> <update id="updateByPrimaryKey" parameterType="com.dayhr.web.module.hr.td.elearn.model.Trainer" >
UPDATE t_hr_td_trainer
<set>
<if test="name != null and name != ''">
name = #{name },
</if>
<if test="title != null and title != ''">
title = #{title },
</if>
<if test="recommend != null and recommend != ''">
recommend = #{recommend },
</if>
<if test="trainerTypeId != null and trainerTypeId != ''">
trainer_type_id = #{trainerTypeId },
</if>
<if test="phone != null and phone != ''">
phone = #{phone },
</if>
<if test="email != null and email != ''">
email = #{email },
</if>
<if test="address != null and address != ''">
address = #{address },
</if>
<if test="proField != null and proField != ''">
pro_field = #{proField },
</if>
<if test="intro != null and intro != ''">
intro = #{intro },
</if>
<if test="headImg != null and headImg != ''">
head_img = #{headImg },
</if>
<if test="labels != null and labels != ''">
labels = #{labels },
</if>
<if test="corpId != null and corpId != ''">
corp_id = #{corpId },
</if>
<if test="createrId != null and createrId != ''">
creater_id = #{createrId },
</if>
<if test="createTime != null and createTime != ''">
create_time = #{createTime },
</if>
<if test="modifierId != null and modifierId != ''">
modifier_id = #{modifierId },
</if>
<if test="modifyTime != null and modifyTime != ''">
modify_time = #{modifyTime }
</if>
</set>
WHERE id = #{id }
</update> <select id="selectByPrimaryKey" resultMap="BaseChildResultMap" parameterType="java.lang.String" >
SELECT
<include refid="Base_Column_List" />
FROM t_hr_td_trainer t
LEFT JOIN t_hr_td_trainertype t1 ON t.trainer_type_id = t1.id
WHERE t.id = #{id }
</select> <select id="selectAll" resultMap="BaseResultMap" >
select
id, name, title, recommend, trainer_type_id, phone, email, address, pro_field,
intro, head_img, labels, corp_id, creater_id, create_time, modifier_id, modify_time
from t_hr_td_trainer
</select> <select id="selectListByCondition" parameterType="com.dayhr.web.module.hr.td.elearn.param.TrainerQueryParam" resultMap="BaseChildResultMap">
SELECT
<include refid="Base_Column_List" />
FROM t_hr_td_trainer t
LEFT JOIN t_hr_td_trainertype t1 ON t.trainer_type_id = t1.id
<include refid="select_Where_Clause" />
</select> </mapper>

二:子查询id="selecLabels":注意此处value对应父查询结果中labels:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.dayhr.web.module.hr.td.elearn.mapper.TrainerLabelMapper" > <!-- 对应表中字段 -->
<resultMap id="BaseResultMap" type="com.dayhr.web.module.hr.td.elearn.model.TrainerLabel" >
<id column="id" property="id" />
<result column="trainer_label" property="trainerLabel" jdbcType="VARCHAR" />
<result column="built_in" property="builtIn" jdbcType="INTEGER" />
<result column="corp_id" property="corpId" jdbcType="INTEGER" />
<result column="creater_id" property="createrId" jdbcType="INTEGER" />
<result column="creater_time" property="createrTime" jdbcType="TIMESTAMP" />
<result column="modifier_id" property="modifierId" jdbcType="INTEGER" />
<result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP" />
</resultMap> <!-- 返回字段 -->
<resultMap id="BaseResultRespMap" type="com.dayhr.web.module.hr.td.elearn.response.TrainerLabelResp" >
<id column="id" property="id" />
<result column="trainer_label" property="trainerLabel" jdbcType="VARCHAR" />
<result column="built_in" property="builtIn" jdbcType="INTEGER" />
<result column="corp_id" property="corpId" jdbcType="INTEGER" />
<result column="creater_id" property="createrId" jdbcType="INTEGER" />
<result column="creater_time" property="createrTime" jdbcType="TIMESTAMP" />
<result column="modifier_id" property="modifierId" jdbcType="INTEGER" />
<result column="modify_time" property="modifyTime" jdbcType="TIMESTAMP" />
<result column="labels" property="labels" />
</resultMap> <!-- 表中基础字段 -->
<sql id="Base_Column_List">
id, trainer_label, built_in, corp_id, creater_id, creater_time, modifier_id, modify_time
</sql> <!-- 查询条件 -->
<sql id="select_Where_Clause">
<where>
1=1
<if test="id != null and id != ''">
AND id = #{id }
</if>
<if test="corpId != null and corpId != ''">
AND corp_id = #{corpId }
</if>
<if test="trainerLabel != null and trainerLabel != ''">
AND trainer_label like CONCAT('%',#{trainerLabel },'%' )
</if>
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy } ${sortType }
</if>
</where>
</sql> <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from t_hr_td_trainerlabel
where id = #{id,jdbcType=CHAR}
</delete> <insert id="insert" parameterType="com.dayhr.web.module.hr.td.elearn.model.TrainerLabel" useGeneratedKeys="true" keyProperty="id">
insert into t_hr_td_trainerlabel (id, trainer_label, built_in, corp_id,
creater_id, creater_time, modifier_id,
modify_time)
values (#{id },#{trainerLabel,jdbcType=VARCHAR}, #{builtIn,jdbcType=INTEGER}, #{corpId,jdbcType=INTEGER},
#{createrId,jdbcType=INTEGER}, #{createrTime,jdbcType=TIMESTAMP}, #{modifierId,jdbcType=INTEGER},
#{modifyTime,jdbcType=TIMESTAMP})
</insert> <update id="updateByPrimaryKey" parameterType="com.dayhr.web.module.hr.td.elearn.model.TrainerLabel" >
UPDATE t_hr_td_trainerlabel
<set>
<if test="trainerLabel != null and trainerLabel != ''">
trainer_label = #{trainerLabel },
</if>
<if test="builtIn != null and builtIn != ''">
built_in = #{builtIn },
</if>
<if test="corpId != null and corpId != ''">
corp_id = #{corpId },
</if>
<if test="createrId != null and createrId != ''">
creater_id = #{createrId },
</if>
<if test="createTime != null and createTime != ''">
create_time = #{createTime },
</if>
<if test="modifierId != null and modifierId != ''">
modifier_id = #{modifierId },
</if>
<if test="modifyTime != null and modifyTime != ''">
modify_time = #{modifyTime }
</if>
</set>
WHERE id = #{id }
</update> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
id, trainer_label, built_in, corp_id, creater_id, creater_time, modifier_id, modify_time
from t_hr_td_trainerlabel
where id = #{id }
</select> <select id="selectAll" resultMap="BaseResultMap" >
select
id, trainer_label, built_in, corp_id, creater_id, creater_time, modifier_id, modify_time
from t_hr_td_trainerlabel
</select> <!-- 验证标签是否存在 -->
<select id="checkLabel" parameterType="com.dayhr.web.module.hr.td.elearn.param.TrainerLabelQueryParam" resultType="Integer">
SELECT COUNT(*)
FROM t_hr_td_trainerlabel
<include refid="select_Where_Clause" />
</select> <!-- 按条件查询标签 -->
<select id="selectLabelList" resultMap="BaseResultRespMap" parameterType="com.dayhr.web.module.hr.td.elearn.param.TrainerLabelQueryParam" >
SELECT
<include refid="Base_Column_List" />
FROM t_hr_td_trainerlabel
<include refid="select_Where_Clause" />
</select> <!-- 子查询 in()会报错,加'0'处理 -->
<select id="selecLabels" resultMap="BaseResultRespMap" >
select
id, trainer_label, built_in, corp_id, creater_id, creater_time, modifier_id, modify_time
from t_hr_td_trainerlabel
where id in ('0'
      <if test="value != null and value.length !=0">
   ,${value }
   </if>
   )
</select> </mapper>

MyBatis子查询的更多相关文章

  1. Mybatis 子查询

    在查询数据库时,需要以查询结果为查询条件进行关联查询. 在mybatis中通过association标签和collection标签实现子查询. 1. collection(集合)和associatio ...

  2. coding++:mybatis 嵌套查询子查询column传多个参数描述

    mybatis 嵌套查询子查询column传多个参数如下: 2.代码示例 备注:注意,相同颜色的单词都是有关联的 <resultMap id="blogResult" typ ...

  3. Mybatis 一对多延迟加载,并且子查询中与主表字段不对应 (19)

    Mybatis  一对多延迟加载,并且子查询中与主表字段不对应应用说明. 实现一对多关联(懒加载),一个教研组对应多个教师,既:教师的教研编号与教研组的教研编号关联,并且教师关联教研组外键与教研组编号 ...

  4. mybatis中collection子查询注入参数为null

    具体实现参照网上,但是可能遇到注入参数为null的情况,经过查阅及自己测试记录一下: 子查询的参数中,有<if test="">之类,需要指定别名,通过 http:// ...

  5. MyBatis关联查询分页

    背景:单表好说,假如是MySQL的话,直接limit就行了. 对于多对多或者一对多的情况,假如分页的对象不是所有结果集,而是对一边分页,那么可以采用子查询分页,再与另外一张表关联查询,比如: sele ...

  6. mybatis分页查询的万能模板

    分页查询项目里太多了,而这种分页查询,在mybatis里面的配置几乎一模一样,今天就整理一个比较好和实用的模板,供以后直接Ctrl+C <select id="queryMember& ...

  7. mybatis分页查询,SqlServer 2008 查询速度很慢

    一个业务场景,需要进行union查询: 查询速度非常慢,大概要37秒: 直接复制sql在数据库客户端执行,速度很快,由此可知是mybatis的原因,在网上搜索,可以配置fetchSize=" ...

  8. MyBatis高级查询 一对一映射

    drop database if exists simple; create database simple; use simple; drop table if exists sys_user; c ...

  9. MyBatis 关联查询的实现:一对多

    有2个实体:用户.订单,一个用户可以拥有多个订单,同时这多个订单属于一个用户,即一对多. user_tb: order_tb: 在“多”的一方(order)添加“一”的一方(user)的主键(user ...

随机推荐

  1. C 计算时间差

    #include <stdio.h>int main(){ //新建四个变量 la 代表小时 kc代表时间 int l,k,a,c; //输入 两个时间 scanf("%d %d ...

  2. 【cookie接口】- jmeter - (请求提示no cookie)

    1.虽然 请求成功 响应码 200  ,但是  返回code 1  ,表示接口不成功 2.加入 空的cookie 管理器就可以了  返回 code 0 注意:状态码 200 只是表示请求是成功的 , ...

  3. 传入中文参数-->服务器_转码的方法

    如果要传入 中文参数到 服务器 使用lr_convert_string_encoding()                            LR_ENC_SYSTEM_LOCALE ,  转为 ...

  4. OpenPAI大规模人工智能平台安装部署文档

    环境要求: 如果需要图形界面,需要在Ubuntu系统安装,否则centos系统安装时是没有问题的(web端和命令行进行任务提交) 安装过程需要有另外一台控制端机器(注意:区别于集群所在的任何一台服务器 ...

  5. C语言struct中的长度可变数组(Flexible array member)

    C_struct中的长度可变数组(Flexible array member) Flexible array member is a feature introduced in the C99 sta ...

  6. c# 批量处理数据录入

    c# 分批处理数据录入 //using System.Text; //using System.Data; //using System.Data.SqlClient; //using System; ...

  7. Java学习个人备忘录之继承

    继承的好处1. 提高了代码的复用性.2. 让类与类之间产生了关系,给第三个特征多态提供了前提. java中支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良.java支持多层继承. C继承 ...

  8. JAVA mysql数据库 配置

    mysql 版本 5.7 数据库连接版本 <!--MySql--><dependency> <groupId>mysql</groupId> <a ...

  9. TCP系列35—窗口管理&流控—9、紧急机制

    一.概述 我们在最开始介绍TCP头结构的时候,里面有个URG的标志位,还有一个Urgent Pointer的16bits字段.当URG标志位有效的时候,Urgent Poinert用来指示紧急数据的相 ...

  10. TCP系列17—重传—7、SACK下的重传

    我们之前介绍SACK选项的时候说过,SACK可以把接收端系列号空间的洞反映给发送端,因此发送端可以更充分的理解接收端的情况,而进行更好的重传恢复过程.这种过程有时候也叫做advanced loss r ...