HashMap 嵌套数组的映射文件 resultType 设置指南

在使用 MyBatis 映射文件时,如果 HashMap 嵌套了数组,那么 resultType 的设置取决于数组中元素的数据类型。

1. 基本数据类型或简单对象类型

如果数组中的元素是基本数据类型(如 int、long、double 等)或者简单对象类型(如 String、Date 等),可以使用对应的 Java 类型作为 resultType。例如:

<resultMap id="userResult" type="com.example.User">
    <result property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <result property="addresses" column="addresses" javaType="java.util.List"  
          ofType="java.lang.String" />
</resultMap>

2. 复杂对象类型

如果数组中的元素是复杂对象类型,可以使用对应的 Java 类的全限定名作为 resultType。例如:

<resultMap id="userResult" type="com.example.User">
    <result property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <result property="addressList" column="addressList"  
          javaType="java.util.List" ofType="com.example.Address" />
</resultMap>

3. Map 类型

如果数组中的元素是 Map 类型,可以使用 java.util.Map 作为 resultType。

4. 自定义复杂类型

如果数组中的元素是自定义的复杂类型,可以使用对应的 Java 类的全限定名作为 resultType。

5. 元素类型不统一的情况

如果 HashMap 嵌套的数组中的元素类型不统一,可以考虑使用 List 作为 resultType,然后在映射文件中使用 collection 来处理。

<resultMap id="userResult" type="com.example.User">
    <result property="id" column="id" />
    <result property="name" column="name" />
    <result property="age" column="age" />
    <collection property="addressList"  column="addressList"  
               ofType="com.example.Address">
        <result property="street" column="street" />
        <result property="city" column="city" />
    </collection>
</resultMap>

总结

根据 HashMap 嵌套数组中元素的数据类型选择合适的 resultType,可以使 MyBatis 正确地将查询结果映射到 Java 对象。

HashMap 嵌套数组的映射文件 resultType 设置指南

原文地址: https://www.cveoy.top/t/topic/mg4X 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录