使用collection查询集合属性

Posted 逆水乘舟,不进则退

tags:

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

介绍resultMap中使用collection查询集合属性

业务需求,查询部门中的多个人员

public class Department {

private Integer id;
private String departmentName;
private List<Employee> emps;

setter和getter省略

}

public class Employee {

private Integer id;
private String lastName;
private String email;
private String gender;
private Department dept;

setter和getter省略

}

1。在department接口写方法

public Department getDeptByIdPlus(Integer id);

2.找到映射文件写

<!--嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则 -->
<resultMap type="com.atguigu.mybatis.bean.Department" id="MyDept">
<id column="did" property="id"/>
<result column="dname" property="departmentName"/>
<!--
collection定义关联集合类型的属性的封装规则
ofType:指定集合里面元素的类型
-->

<collection property="emps" ofType="com.atguigu.mybatis.bean.Employee">
<!-- 定义这个集合中元素的封装规则 -->
<id column="eid" property="id"/>
<result column="last_name" property="lastName"/>
<result column="email" property="email"/>
<result column="gender" property="gender"/>
</collection>
</resultMap>
<!-- public Department getDeptByIdPlus(Integer id); -->
<select id="getDeptByIdPlus" resultMap="MyDept">
SELECT d.id did,d.dname dname,
e.id eid,e.last_name last_name,e.email email,e.gender gender
FROM department d
LEFT JOIN tbl_employee e
ON d.id=e.did
WHERE d.id=#{id}
</select>

3进行测试

@Test
public void test06() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();

try{
DepartmentMapper mapper = openSession.getMapper(DepartmentMapper.class);
Department department = mapper.getDeptByIdPlus(1);
System.out.println(department);
System.out.println(department.getEmps());

}finally{
openSession.close();
}
}

}

运行结果如下:

 

以上是关于使用collection查询集合属性的主要内容,如果未能解决你的问题,请参考以下文章

java8 stream().map().collect()用法

PHP框架Laravel学习笔记——集合的常用方法

Reactor系列collect集合

大数据之Hive:Hive函数之collect_set()函数

使用collection查询集合属性

Hive---collect_list和collect_set