使用resultMap定义查询结果集,实现关联查询

Posted 逆水乘舟,不进则退

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用resultMap定义查询结果集,实现关联查询相关的知识,希望对你有一定的参考价值。

接下来介绍resultMap定义查询结果集,实现关联查询

1 首先在接口中定义操作的方法

public interface EmployeeMapperPlus {

public Employee getEmpAndDept(Integer id);

}

2在xml里进行配置

<!--第一种进行配置

联合查询:级联属性封装结果集
-->
<resultMap type="com.atguigu.mybatis.bean.Employee" id="MyDifEmp">
<id column="id" property="id"/>
<result column="last_name" property="lastName"/>
<result column="gender" property="gender"/>
<result column="did" property="dept.id"/>
<result column="departmentName" property="dept.departmentName"/>
</resultMap>


<!--
第二种配置使用association定义关联的单个对象的封装规则;
-->
<resultMap type="com.atguigu.mybatis.bean.Employee" id="MyDifEmp2">
<id column="id" property="id"/>
<result column="last_name" property="lastName"/>
<result column="gender" property="gender"/>

<!-- association可以指定联合的javaBean对象
property="dept":指定哪个属性是联合的对象
javaType:指定这个属性对象的类型[不能省略]
-->
<association property="dept" javaType="com.atguigu.mybatis.bean.Department">
<id column="did" property="id"/>
<result column="departmentName" property="departmentName"/>
</association>
</resultMap>
<!-- public Employee getEmpAndDept(Integer id);-->
<select id="getEmpAndDept" resultMap="MyDifEmp2">
SELECT e.id id,e.last_name last_name,e.email email ,e.gender gender,e.did eedid,
d.id did,d.dname departmentName FROM tbl_employee e,department d
WHERE e.did=d.id AND e.id=#{id}
</select>

3在junit里进行测试

@Test
public void test05() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
Employee empAndDept = mapper.getEmpAndDept(1);
System.out.println(empAndDept);
System.out.println(empAndDept.getDept());

}finally{
openSession.close();
}


}

以上是关于使用resultMap定义查询结果集,实现关联查询的主要内容,如果未能解决你的问题,请参考以下文章

mybatis中的ResultMap关联映射

resultMap自定义映射(多对一)

resultMap自定义映射(多对一)

MyBatis一对多查询及延迟加载

Mybatis关联查询

关联查询resultMap使用规则总结——