关于mybatis中collection出现的问题
我在代码中的collection标签中使用了javaType导致映射是失败的,我使用了ofType就可以了,下面介绍这两个标签之间的区别。
ofType
和 javaType
属性都用于指定集合或关联对象的类型,但它们的使用方式和含义稍有不同。
ofType
属性:用于指定集合元素或关联对象的类型。它接受一个 Java 类型的全限定名,表示集合中元素的实际类型或关联对象的实际类型。例如,ofType="com.lxz.user.pojo.Permission"
表示集合中的元素是com.lxz.user.pojo.Permission
类型的对象。
在使用 <collection>
标签时,ofType
属性通常用于指定集合中元素的类型。这样 MyBatis 就知道如何将查询结果映射到相应的对象类型上,并创建正确类型的集合。
javaType
属性:用于指定集合或关联对象自身的类型。它接受一个 Java 类型的全限定名,表示集合或关联对象的实际类型。例如,javaType="java.util.List"
表示该集合字段的类型是java.util.List
。
前面表示的是集合中有什么元素,而下面表示的是集合是什么类型的。
ofType的用法:
<collection property="permissions" ofType="com.lxz.user.pojo.SysRes">
<id property="id" column="res_id"/>
<result property="resName" column="res_name"/>
<result property="resDesc" column="res_desc"/>
</collection>
javaType的用法:
<collection property="permissions" ofType="com.lxz.user.pojo.SysRes" javaType="java.util.List">
<result property="resName" column="res_name" javaType="java.lang.String"/>
<result property="resDesc" column="res_desc"/>
</collection>