我有一个对象,它有一个像这样的List变量:
ExportQueue.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对象时遇到错误。据我所知,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
?
答案 0 :(得分:1)
您可以在myBatis-config中定义使用CommaSeparatedStringListTypeHandler作为List
类型的默认句柄一旦你定义了这个,你就不必在结果图中特别提到typeHandler的“errors”,而插入MyBatis时默认会使用CommaSeparatedStringListTypeHandler来解决你的错误。
<typeHandlers>
<typeHandler javaType='List' handler='CommaSeparatedStringListTypeHandler' />
</typeHandlers>