为什么List <generic>在使用java的mybatis时不起作用?

时间:2016-02-22 11:06:28

标签: java generics collections mybatis spring-mybatis

我的服务代码

public HashMap<String, Object> syncEmployees(Long updatedAt, String userId) {
    HashMap<String, Object> outputMap = new LinkedHashMap<String, Object>();
    **List<String>** outputEmployee = employeeDao.getEmployeeSyncDetails(updatedAt);

        System.out.println("\n\n Size : "+outputEmployee.size()+"\nOutput : "+outputEmployee);

    outputMap.put("employee", outputEmployee);
    return outputMap;
}

返回类型的Dao代码是字符串 List(String)

的列表
**List<String>** getEmployeeSyncDetails(@Param("updatedAt") long updatedAt);

.XML映射器和查询where方法返回 xyzModel 的列表

<resultMap id="xyzmap" type="xyzModel" >
        <result property="userId" column="user_id" />
        <result property="employeeCode" column="employee_code" />
        <result property="designationId" column="designation_id" />

    </resultMap>


<select id="getxyzDetails" resultMap="xyzmap">
    SELECT   
             user_id, ua.employee_code, designation_id
    FROM users
    WHERE  updated_at &gt; #{updatedAt} 
    ORDER BY  updated_at ASC
</select>

输出就像 尺寸:3 输出:[com.webapp.models。 xyzModel @ 1567524c,com.webapp.models。 xyzModel @ 7744c2cd,com.webapp.models。 xyzModel @ 43515de7]

我的问题是它是如何工作的? xyzmodel 如何在String列表中填充 实际上我的问题是XML mapper返回xyzModel,但如果我写任何其他模型,如UserModel或String或任何其他模型,它没有显示任何错误或完美执行正确的输出。如果我们处理这个列表,那么只有他发送错误 java.lang.ClassCastException

1 个答案:

答案 0 :(得分:1)

在运行时,没有泛型的类型。

如果你自己编写getEmployeeSyncDetails的代码,你的编译器会警告你这个。

在此处阅读有关java中的类型擦除的内容:https://docs.oracle.com/javase/tutorial/java/generics/erasure.html