`
aa8945163
  • 浏览: 276036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义类型

阅读更多
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);  
         }  
}
分享到:
评论

相关推荐

    易语言DLL返回自定义类型

    本文将深入探讨易语言DLL返回自定义类型的相关知识,包括如何创建、调用以及处理返回的自定义类型数据。 一、易语言DLL的创建 1. 定义自定义类型:在易语言中,可以通过“类型”关键字定义自定义类型,例如,“类型...

    vba用户自定义类型vba用户自定义类型vba用户自定义类型

    ### VBA用户自定义类型详解 #### 一、引言 在VBA(Visual Basic for Applications)编程中,用户自定义类型(User-Defined Types,UDTs)是一种非常实用的功能,它允许开发者创建包含多种数据类型的复合数据结构。...

    易语言自定义类型数组排序

    在易语言中,自定义类型数组排序是一项重要的编程技能,它允许用户按照特定规则对包含自定义类型的数据进行排序。本文将详细讲解易语言自定义类型数组排序的相关知识点。 首先,我们需要理解易语言中的自定义类型...

    AIDL自定义类型交互

    **Android AIDL(Android Interface Definition Language)自定义类型交互** 在Android系统中,当需要在不同的进程间进行通信时,AIDL(Android Interface Definition Language)是首选的技术。它是一种接口定义...

    自定义类型转换器

    自定义类型转换器是当Struts2内置的转换器无法满足特定业务需求时,开发者自行创建的一种扩展方式。然而,这里提到的"自定义类型转换器"实际上与权限控制有关,而非类型转换。描述中的内容主要涉及的是如何实现用户...

    Oracle数据库之C#中调用示例Oracle自定义类型(自定义Object对象)

    C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...

    Struts自定义类型转换器

    ### Struts自定义类型转换器 #### 一、概述 在Web开发中,表单提交的数据通常是字符串形式的,而在业务逻辑处理时往往需要将这些数据转换为其他类型的对象(如日期、数字等)。Struts框架为了更好地处理这种类型...

    C++传递自定义类型作为参数到Qml

    在C++和Qml的交互中,有时我们需要将C++中的自定义类型数据传递到Qml界面中。这个过程涉及到Qt的元对象系统(Meta Object System)和Qml的上下文属性(Context Properties)。本文将深入讲解如何实现C++自定义类型到...

    SSM笔记-自定义类型转换器

    这涉及到类型转换,SpringMVC提供了一套完善的机制来支持自定义类型转换器,使得我们能够按需定制数据转换逻辑,从而提高代码的可读性和维护性。 标题中的"SSM笔记-自定义类型转换器"指的是在SpringMVC中创建自定义...

    qt文件操作读写自定义类型

    本例程重点介绍了如何在Qt环境下,通过重载QDataStream的operator和operator&gt;&gt;来实现自定义类型的数据读写,从而简化对文件的操作。 首先,理解QDataStream类是Qt中处理二进制数据流的核心工具,它允许我们以结构化...

    为自定义类型分配和回收空间。

    一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 ...(2) 为自定义类型分配和回收空间。

    vba自定义类型返回函数vba自定义类型返回函数

    ### VBA自定义类型返回函数解析 #### 一、VBA与自定义类型基础 VBA(Visual Basic for Applications)是Microsoft Office等应用程序中的内置编程语言。它支持面向对象编程和过程式编程,并且可以创建宏来自动化...

    Struts2自定义类型转换

    ### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...

    COM(activex)使用自定义类型传递数据

    当需要传递自定义数据结构时,我们首先定义一个接口,该接口包含一组方法,这些方法接收或返回自定义类型的实例。自定义类型通常以结构体(struct)的形式存在于C++中,或者以类(class)的形式存在于其他支持COM的...

    动态自定义类型.rar

    在编程领域,动态自定义类型是一种允许程序在运行时创建和修改数据类型的机制。这种特性在许多编程语言中都有体现,比如Python、JavaScript、C#等。动态自定义类型允许开发者根据需求灵活地构建对象,而无需在编译时...

    hash_set c++总结(自定义类型struct、class)

    hash_set c++总结(自定义类型stuct、class)。总结自定义struct、class三个案例。find函数测试,hash_set迭代器。

    简要分析Java的Hibernate框架中的自定义类型

    在Java的Hibernate框架中,自定义类型是一种非常实用的功能,它允许开发者根据特定业务需求扩展Hibernate内置的数据类型。当我们发现Hibernate默认的数据类型无法满足我们存储数据的特殊要求时,例如需要处理复杂...

    DLL返回自定义类型.rar

    本资源“DLL返回自定义类型.rar”显然是关于如何在DLL中定义并返回自定义类型的示例,这在跨进程通信或模块化设计中非常常见。 在Windows API中,创建和使用DLL通常涉及到以下几个步骤: 1. **定义自定义类型**:...

Global site tag (gtag.js) - Google Analytics