首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

自定义门类

2012-12-20 
自定义类型public class JsonNodeType extends AbstractType{ private static final long serialVersionUI

自定义类型
public class JsonNodeType extends AbstractType{

private static final long serialVersionUID = 1L;  
//     protected static transient ILocalLogger logger = LocalLoggerFactory.getLogger(JsonNodeType.class);  
  
     public int[] sqlTypes(Mapping mapping) {  
         return new int[] {StringType.INSTANCE.sqlType()};  
     }  
  
     @Override 
     public int getColumnSpan(Mapping mapping) {  
         return 1;  
     }  
  
     @Override 
     public Class<JsonNode> getReturnedClass() {  
         return JsonNode.class;  
     }  
  
     @Override 
     public boolean isDirty(Object oldState, Object currentState, boolean[] checkable, SessionImplementor session) {  
         return !isSame(oldState, currentState, session.getEntityMode());  
     }  
  
     @Override 
     public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) throws SQLException {  
         return nullSafeGet(rs, names[0], session, owner);  
     }  
  
     @Override 
     public Object nullSafeGet(ResultSet rs, String name, SessionImplementor session, Object owner) throws SQLException {  
         return toJsonNode(StringType.INSTANCE.nullSafeGet(rs, name, session));  
     }  
  
     @Override 
     public void nullSafeSet(PreparedStatement st, Object value, int index, boolean[] settable, SessionImplementor session) throws SQLException {  
         StringType.INSTANCE.nullSafeSet(st, toJsonStr(value), index, settable, session);  
     }  
  
     @Override 
     public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) throws SQLException {  
         StringType.INSTANCE.nullSafeSet(st, toJsonStr(value), index, session);  
     }  
  
     @Override 
     public void setToXMLNode(Node node, Object value, SessionFactoryImplementor factory) {  
         StringType.INSTANCE.setToXMLNode(node, toJsonStr(value), factory);  
     }  
  
     @Override 
     public String toLoggableString(Object value, SessionFactoryImplementor factory) {  
         return StringType.INSTANCE.toLoggableString(toJsonStr(value), factory);  
     }  
 
    @Override 
    public Object fromXMLNode(Node xml, Mapping factory) {  
         return StringType.INSTANCE.fromXMLNode(xml, factory);  
     }  
  
     @Override 
     public String getName() {  
         return "jsonNode";  
     }  
  
     @Override 
     public Object deepCopy(Object value, EntityMode entityMode, SessionFactoryImplementor factory) {  
        return value == null ? null : toJsonNode(value.toString());  
     }  
       
     @Override 
     public boolean isMutable() {  
         return false;  
     }  
  
     @Override 
    public Object replace(Object original, Object target, SessionImplementor session, Object owner, @SuppressWarnings("rawtypes") Map copyCache) {  
         if (original == null) return null;  
         if (original.equals(target)) return target;  
         return toJsonNode(original.toString());  
    }  
 
     @Override 
    public boolean[] toColumnNullness(Object value, Mapping mapping) {  
        return StringType.INSTANCE.toColumnNullness(value, mapping);  
     }  
}  
  
  
/** json操作 */ 
     public static final ObjectMapper JSON_MAPPER = new ObjectMapper();  
     static {  
         JSON_MAPPER.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);  
         JSON_MAPPER.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);  
         JSON_MAPPER.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);  
     }  
     /** 
      * json对象转化为字符串 
      * @param value json对象 
      * @return 
      */ 
     public static String toJsonStr(Object value) {  
         try {  
             return JSON_MAPPER.writeValueAsString(value);  
         } catch (IOException e) {  
             throw new IllegalArgumentException(logger.getText(I10NFramework.convertJsonFail, value), e);  
         }  
    }  
       
     /** 
      * String转化为JsonNode对象 
      * @param value 
      * @return JsonNode 
      */ 
     public static JsonNode toJsonNode(String value) {  
         try {  
             return value == null ? null : JSON_MAPPER.readValue(value, JsonNode.class);  
         } catch (IOException e) {  
             throw new IllegalArgumentException(logger.getText(I10NFramework.convertJsonFail, value), e);  
         }  
}

热点排行