我有Set<String>
類型的某些字段一個POJO。 我想堅持他們的分貝爲JSON,所以我創建一個自定義類型控制器,但是當我試圖堅持我的錯誤:沒有發現類型處理器....spring3 + MyBatis的定製類型控制器
testSave(it.infora.suap.service.MailMessageServiceTest): nested exception is org.apache.ibatis.executor.ExecutorException: There was no TypeHandler found for parameter recipients_to of statement it.infora.suap.persistence.MailMessageMapper.insertEmailMessage
參數recipients_to在一個Set<String>
,這是我的自定義類型處理器類:
public class SetTypeHandler implements TypeHandler<Set<String>>{
@Override
public void setParameter(PreparedStatement ps, int columnIndex, Set<String> parameter, JdbcType jt) throws SQLException {
ps.setString(columnIndex, serializeToJson(parameter));
}
@Override
public Set<String> getResult(ResultSet rs, String columnName) throws SQLException {
return deserializeFromJson(rs.getString(columnName));
}
@Override
public Set<String> getResult(ResultSet rs, int columnIndex) throws SQLException {
return deserializeFromJson(rs.getString(columnIndex));
}
@Override
public Set<String> getResult(CallableStatement cs, int columnIndex) throws SQLException {
return deserializeFromJson(cs.getString(columnIndex));
}
private String serializeToJson(Set<String> parameter){
Gson gson = new Gson();
return gson.toJson(parameter);
}
private Set<String> deserializeFromJson(String value){
Gson gson = new Gson();
Type collectionType = new TypeToken<Set<String>>(){}.getType();
Set<String> result = gson.fromJson(value, collectionType);
return result;
}
}
有什麼不對?我使用註釋映射器接口而不是mapper.xml
感謝
安德烈
可以看到你在哪裏使用你的typeHandler的XML? – Vargan 2013-03-06 09:44:28
我沒有mapper.xml ....我使用帶註釋的映射器類。我創建了其他自定義typeHandler來管理枚舉類型字段,並在插入操作期間自動調用 – andrea 2013-03-06 10:00:30
那麼applicationContext.xml又如何呢? – Vargan 2013-03-06 10:05:03