2013-02-07 55 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>