Day24——MyBatis自定义映射 collection 分步查询使用延迟加载

一. 例子

DepartmentMapperResultMap.java

package com.atguigu.mybatis.dao;

import com.atguigu.mybatis.beans.Department;

public interface DepartmentMapperResultMap {
	
	public Department selectDepartmentAndEmployeesStep(Integer id);
}

EmployeeMapperResultMap.java

package com.atguigu.mybatis.dao;

import java.util.List;

import com.atguigu.mybatis.beans.Employee;

public interface EmployeeMapperResultMap {

	public List<Employee> selectEmployeesByDid(Integer did);
}

EmployeeMapperResultMap.xml

<!-- public List<Employee> selectEmployeesByDid(Integer did); -->
	<select id="selectEmployeesByDid" resultType="com.atguigu.mybatis.beans.Employee">
         select id, last_name, email, gender from tbl_employee where d_id = #{did}	
	</select>

DepartmentMapperResultMap.xml

<!-- 
	   collection 分步查询:
	          需求:查询部门并且查询部门中所有的员工信息
	          1. 先根据部门id查询部门的信息
	          2. 再根据部门id查询员工信息
	
	 -->
	<!-- public Department selectDepartmentAndEmployeesStep(Integer id); -->
	<select id="selectDepartmentAndEmployeesStep" resultMap="myDeptAndEmpsStep">
	     select id, dept_name from tbl_dept where id = #{id}
	</select>
	<resultMap type="com.atguigu.mybatis.beans.Department" id="myDeptAndEmpsStep">
	     <id column="id" property="id"/>
	     <result column="dept_name" property="departmentName"/>
	     
	     <collection property="emps" 
	         select="com.atguigu.mybatis.dao.EmployeeMapperResultMap.selectEmployeesByDid"
	         column="id">
	     </collection>
	</resultMap>

TestMyBatisResultMap.java

@Test
	public void testResultMapCollectionStep() throws Exception {
		SqlSessionFactory ssf = getSqlSessionFactory();
		SqlSession session = ssf.openSession();
		
		try {
              DepartmentMapperResultMap mapper = 
            		  session.getMapper(DepartmentMapperResultMap.class);			
              Department dept = mapper.selectDepartmentAndEmployeesStep(1);
              System.out.println(dept.getDepartmentName());
              System.out.println("------------------------------------");
              
              System.out.println(dept.getEmps());
			
			session.commit();
		} finally {
			// TODO: handle finally clause
			session.close();
		}
	}

public SqlSessionFactory getSqlSessionFactory() throws Exception {
		String resource = "mybatis-config.xml"; 
		InputStream inputStream = 
				Resources.getResourceAsStream(resource); 
		SqlSessionFactory sqlSessionFactory = 
				new SqlSessionFactoryBuilder().build(inputStream);
		return sqlSessionFactory;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值