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>

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容