0

我有一个对象,它有一个像这样的 List 变量:

导出队列.java

public class ExportQueue implements Serializable {
    private List<String> errors;

    public List<String> getErrors() {
        return errors;
    }

    public void setErrors(List<String> errors) {
        this.errors = errors;
    }
    public void addError(String error) {
        if(this.errors == null) this.errors = new ArrayList<String>();
        this.errors.add(error);
    }
}

我已经为此定义了 ResultMap ...

ExportQueueDao.xml

<mapper namespace="...">
    <resultMap id="exportQueueResultMap" type="...ExportQueue">
         <result property="errors" column="errors"
            typeHandler="...CommaSeparatedStringListTypeHandler" />
    </resultMap>
</mapper>

ExportQueueDao.java

@Insert(INSERT_UPDATE)
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertOrUpdate(ExportQueue ExportQueue);

我定义了CommaSeparatedStringListTypeHandler,但是当我尝试插入对象时出现错误。据我了解,INSERT 不使用 ResultMap,因此看不到 TypeHander,因此它不知道如何处理 List 错误。

这是我在当前设置中遇到的错误...

Caused by: org.apache.ibatis.executor.ExecutorException: There was no TypeHandler found for parameter errors of statement ....dao.ExportQueueDao.insertOrUpdate

我如何配置它以便 MyBatis 知道如何处理List<String> errors?

4

1 回答 1

1

您可以在 myBatis-config 中定义使用 CommaSeparatedStringListTypeHandler 作为类型 List 的默认句柄

一旦你定义了 this ,你就不必在结果映射中特别提到“错误”的 typeHandler ,同时插入 MyBatis 将默认使用 CommaSeparatedStringListTypeHandler 来处理你的错误。

<typeHandlers> 
        <typeHandler javaType='List' handler='CommaSeparatedStringListTypeHandler' /> 
</typeHandlers>
于 2013-09-12T09:05:45.860 回答