Mybatis 自定义结果映射规则 association分步延迟查询

文章目录

在SQL映射文件中,数据库查询结果和Bean实体类的名称不同时,除了部分能用驼峰命名法解决外,还需要使用自定义结果映射规则来解决。

支持级联属性

<resultMap type="com.mxthd.mybatis.bean.Employee" id="MyEmp">
    <!-- 指定注解列的封装原则
   id 定义主键会底层有优化,
   column:指定哪一列
   property:指定对应的JavaBean属性
   -->
    <id column="id" property="id"></id>
    <result column="last_name" property="lastName"/>
    <result column="email" property="email"/>
    <result column="gender" property="gender"/>
</resultMap>
<select id="getEmpByIds" resultMap="MyEmp">
    select * from tab_empoyee where id=#{id}
</select>

association

还可以使用association指定联合的JavaBean对象

<resultMap type="com.mxthd.mybatis.bean.Employee" id="MyDifEmp2">
    <id column="id" property="id" />
    <result column="last_name" property="lastName" />
    <result column="gender" property="gender"/>
    <result column="email" property="email"/>
    <!-- association 可以指定联合的JavaBean对象
     property : 指定哪个属性是联合对象
     JavaType : 指定属性对象的类型


    -->
    <association property="dept" javaType="com.mxthd.mybatis.bean.Department">
        <id column="did" property="id" />
        <result column="dept_name" property="departmentName"/>
    </association>
</resultMap>

分步查询

<!-- association 进行分布查询
   1、先按照员工id查询员工信息
   2、根据查询员工信息的d_id值去部门表查出部门信息
   3、部门设置到员工中
   -->
<resultMap type="com.mxthd.mybatis.bean.Employee" id="MyEmpByStep">
    <id column="id" property="id"></id>
    <result column="last_name" property="lastName"></result>
    <result column="email" property="email"/>
    <result column="gender" property="gender"/>
    <!-- association定义关联对象的封装规则
    select :表面当前属性是调用select指定的方法查出的结果
    column : 传的参数
    -->
    <association property="dept" column="d_id" 
                 select="com.mxthd.mybatis.dao.DeparmentMapper.getDeptById"/>
</resultMap>
<select id="getEmpByIdStep" resultMap="MyEmpByStep">
    select * from tab_empoyee where id=#{param1}
</select>
<?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.mxthd.mybatis.dao.DeparmentMapper">
    <select id="getDeptById" resultType="com.mxthd.mybatis.bean.Department">
        select id,dept_name departmentName from tab_dept where id=#{id}
    </select>
</mapper>
原文链接:,转发请注明来源!

发表评论