一、父查询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. TW实习日记:第13天

    昨天困扰的问题终于解决了.因为是百度地图api提供的函数,所以这个解决办法并不适用于所有异步请求,仅仅针对百度地图api的调用接口函数和回调函数.有两种解决方法可以解决百度地图api中常出现的请求回调 ...

  2. LeetCode 145 ——二叉树的后序遍历

    1. 题目 2. 解答 2.1. 递归法 定义一个存放树中数据的向量 data,从根节点开始,如果节点不为空,那么 递归得到其左子树的数据向量 temp,将 temp 合并到 data 中去 递归得到 ...

  3. HDU 1403 Longest Common Substring(后缀自动机——附讲解 or 后缀数组)

    Description Given two strings, you have to tell the length of the Longest Common Substring of them. ...

  4. Python中的名字隐藏

    Python对于module文件中的name是没有private和public区分的,严格来说,在module文件重定义的任何name,都可以被外界访问.但是,对于 from module imort ...

  5. 重新看《JavaScript高级程序设计》

    几点心得: 1)数据是基础,一共有3种基础数据:null.undefined.和object:遵循从无到有从简单到复杂的演变过程 2)衍生数据:衍生数据是指操作符合语句,这些是基础数据产生导致的必然结 ...

  6. PHP查询网站

    1.w3school http://www.w3school.com.cn/php/ 2.PHP官网 http://php.net/manual/en/funcref.php 3.国内的类似w3csh ...

  7. 异常--throw

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 网络编程--System.Net

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"

    (1) 网上下载了一个android应用:死活用不了,查了以下,原来是android studio版本不对,于是把android studio的版本从2.2 升级到3.0,后来发现没法升级,只能下载, ...

  10. 【Asp.Net Core】ASP.NET Core 2.0 + EF6 + Linux +MySql混搭

    好消息!特好消息!同时使用ASP.NET Core 2.0和.NET Framework类库还能运行在linux上的方法来啦! 是的,你没有看错!ASP.NET Core 2.0,.NET Frame ...