2013-02-07 20 views
0

插入列表 我有,有一个变量,像这样一个列表的对象: 如何配置DAO文件来处理的MyBatis

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不使用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

@kasdega你可以用这个结果图进行任何操作,我的意思是任何操作都可以用这个结果图成功或者全部失败。我想你错过了一些表达,你可以把完整的map.xml或这个完整的map.xml? – erhun

+0

在该dao.xml文件的其余部分是平安无事,我已经有意留出来为简洁起见,是的,如果我完全删除了错误栏中它工作正常。 – kasdega

+0

您尝试定义custome类型处理程序,那么您的CommaSeparatedStringListTypeHandler类实现在哪里? – erhun

回答

1

你可以在你的MyBatis-config来使用CommaSeparatedStringListTypeHandler作为默认句柄类型列表

一旦你定义了这个,你不会有对结果特别提到映射类型控制器的“错误”也同时定义插入MyBatis将默认使用CommaSeparatedStringListTypeHandler来处理您的错误。

<typeHandlers> 
     <typeHandler javaType='List' handler='CommaSeparatedStringListTypeHandler' /> 
</typeHandlers>