Mybatis之collection标签中javaType和ofType属性的区别说明

 更新时间:2023年12月27日 09:39:02   作者:ouc码农Lee  
这篇文章主要介绍了Mybatis之collection标签中javaType和ofType属性的区别说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

collection标签中的javaType和ofType属性的区别

在使用mybatis时,有时候需要在数据库中进行关联查询(left/right join)来根据某个字段获取到另一个表的的一个List集合。

在配置resultMap时,需要用到collection标签对这个LIst属性进行映射:

比如在部门表中有一个列表List存放这个表中的所有员工,javaBean如下:

public class Department {

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

员工表如下:

public class Employee {

	private Integer id;
	private String lastName;
	private String email;
	private String gender;
}

用mybatis对这两个表进行关联查询查询

<select id="getDeptByIdPlus" resultMap="MyDept">
		SELECT d.id did, d.dept_name dept_name,
			e.id eid, e.last_name last_name, e.email email,e.gender gender
		FROM department d
		LEFT JOIN employee e
		ON d.id = e.d_id
		WHERE d.id = 1
</select> 

由于是通过关联查询得到的这个List

所以此时需要用到resultMap标签对返回值的类型进行自定义:

<resultMap type="bean.Department" id="MyDept">
		<id column="did" property="id"/>
		<result column="dept_name" property="departmentName"/>
		<!-- 
			collection定义关联的集合类型的属性的封装规则:
			property="emps":指定这是哪个集合属性,这里为那个集合属性emps
			ofType:指定集合内封装的JavaBean类型(集合内装的什么),这里即为Employee类
		 -->
		<collection property="emps" ofType="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>

在这个resultMap 标签中,用collection这个子标签对这个List进行映射。通过Alt+/可以发现,collection标签中包含两个关于javaBean的Type属性分别是ofType和javaType。

其中ofType指定的这个List所存放的javaBean的类型,比如这里就是Employee类型。

而javaType指定的当前这个配置的标签所对应的属性,比如我们这里的collection配置的是一个List,就可以配置成javaType=“java.util.ArrayList”(此处没写)。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Spire.XLS for Java精确控制Excel打印页边距的实战指南

    Java Spire.XLS for Java精确控制Excel打印页边距的实战指南

    在当今的企业运营中,Excel作为数据处理、报表生成和数据分析的核心工具,其重要性不言而喻,下面我们就来看看Java如何利用Spire.XLS for Java轻松实现对Excel打印页边距的精准控制吧
    2026-01-01
  • Java项目打包Docker镜像全流程

    Java项目打包Docker镜像全流程

    本文是一份超详细的Java项目Docker化实战手册,从环境准备到最终上线,手把手带你完成整个容器化部署流程,无论你是刚接触Docker的新手,还是想系统梳理容器化流程的开发者,这篇文章都能给你带来实实在在的帮助,需要的朋友可以参考下
    2025-04-04
  • Java 如何优雅的抛出业务异常

    Java 如何优雅的抛出业务异常

    这篇文章主要介绍了Java 如何优雅的抛出业务异常,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • Spark SerializedLambda错误的两种解决方案

    Spark SerializedLambda错误的两种解决方案

    这篇文章主要介绍了Spark SerializedLambda错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java实现FTP上传到服务器

    Java实现FTP上传到服务器

    这篇文章主要为大家详细介绍了Java实现FTP上传到服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • SpringBoot整合MyCat实现读写分离的方法

    SpringBoot整合MyCat实现读写分离的方法

    这篇文章主要介绍了SpringBoot整合MyCat实现读写分离的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Spring扩展点之BeanFactoryPostProcessor详解

    Spring扩展点之BeanFactoryPostProcessor详解

    这篇文章主要介绍了Spring扩展点之BeanFactoryPostProcessor详解,Spring的设计非常优雅,有很多的扩展点供我们对项目进行扩展,今天学习一下Spring其中扩展点之一的BeanFactoryPostProcessor,需要的朋友可以参考下
    2023-11-11
  • Java数据结构之加权无向图的设计实现

    Java数据结构之加权无向图的设计实现

    加权无向图是一种为每条边关联一个权重值或是成本的图模型。这种图能够自然地表示许多应用。这篇文章主要介绍了加权无向图的设计与实现,感兴趣的可以了解一下
    2022-11-11
  • Java emoji持久化mysql过程详解

    Java emoji持久化mysql过程详解

    这篇文章主要介绍了Java emoji持久化mysql过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • JAVA二叉树的几种遍历(递归,非递归)实现

    JAVA二叉树的几种遍历(递归,非递归)实现

    这篇文章主要介绍了JAVA二叉树的几种遍历(递归,非递归)实现,需要的朋友可以参考下
    2020-12-12

最新评论