MyBatis3系列__06查询的几点补充

关于查询的一点补充: 当查询部门信息时,希望查询该部门下的所有员工,下面会采取两种方式实现:

1.联合查询

public Department getDeptWithEmpById(Integer id); 对应的xml文件中新增:

 <resultMap id="myDept" type="com.mybatis.learn.bean.Department">
        <id column="dept_id" property="deptId"/>
        <result column="dept_name" property="deptName"/>
        <!-- 
            collection定义关联集合类型的属性的封装规则 
            ofType:指定集合里面元素的类型
        -->
        <collection property="emps" ofType="com.mybatis.learn.bean.Employee">
            <id column="eid" property="id"/>
            <result column="last_name" property="lastName"/>
            <result column="gender" property="gender"/>
            <result column="email" property="email"/>
        </collection>
    </resultMap>

    <select id="getDeptWithEmpById" resultMap="myDept">
        SELECT d.dept_id, d.dept_name dept_name, e.id eid, e.last_name last_name,
            e.email email,e.gender gender, e.dept_id
		    FROM tbl_dept d
		    LEFT JOIN tbl_employee e
		    ON d.dept_id=e.dept_id
		    WHERE d.dept_id=#{deptId}
    </select>
复制代码

2.分步查询

可以按照上一篇的模式,还是在有需要的时候去查询部门包含的员工信息,具体做法如下: 在EmployeeMapper中新增对应的方法: public List<Employee> getEmpsByDeptId(Integer deptId); xml文件中相应的更改:

<select id="getEmpsByDeptId" resultType="com.mybatis.learn.bean.Employee">
        select * from tbl_employee where dept_id=#{deptId}
</select>
复制代码

在DepartmentMapper中添加查询部门信息的方法: public Department getDeptStepByDeptId(Integer deptId); 在对应的xml文件中添加以下内容:

 <resultMap id="myDept2" type="com.mybatis.learn.bean.Department">
        <id column="dept_id" property="deptId"/>
        <result column="dept_name" property="deptName"/>
        <collection property="emps"
                    select="com.mybatis.learn.dao.EmployeeMapper.getEmpsByDeptId"
                    column="{deptId=dept_id}" fetchType="lazy">
        </collection>
 </resultMap>

<select id="getDeptStepByDeptId" resultMap="myDept2">
        select dept_id, dept_name from tbl_dept where dept_id=#{deptId}
</select>
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值