使用iBatis的类型处理器TypeHandlerCallback

1:ibaits中 用TypeHandlerCallback处理自定义类型:

 

转载:http://wangym.iteye.com/blog/1439520

 

下面看下list处理过程:

 

public class ListTypeHandler implements TypeHandlerCallback {

    public Object getResult(ResultGetter getter) throws SQLException {
        if(getter.getObject() == null) {
            return null;
        }
        return convertDBToValue(getter.getString());
    }

    public Object valueOf(String s) {
        return convertDBToValue(s);
    }
    
    //将POJO中的值转换数据库值存储
    private String saveValueToDB(List<Long> ids) {
        StringBuffer sb=new StringBuffer();
        for(Long id: ids) {
            sb.append(id).append(",");
        }
        return sb.length() > 0 ? sb.substring(0, sb.length() - 1).toString() : "";
    }
    
   //将数据库的值转换为POJO所需要的值 
    private List<Long> convertDBToValue(String value) {
        String[] strs=value.split(",");
        List<Long> ids=new ArrayList<Long>();
        for(String str: strs) {
            if(str != null && str.trim().length() > 0) {
                ids.add(Long.parseLong(str));
            }
        }
        return ids;
    }

    @SuppressWarnings("unchecked")
    public void setParameter(ParameterSetter setter, Object obj) throws SQLException {
        setter.setString(saveValueToDB((List<Long>)obj));
    }
}
 

你可能感兴趣的:(TypeHandler)