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

不需要对象关联的转换器

    博客分类:
  • JAVA
 
阅读更多
private static class MyResultTransformer<E> implements ResultTransformer
    {
        private static final long serialVersionUID = 3592627688907737019L;

        private final Class<E> resultClass;

        private Setter[] setters;

        private PropertyAccessor propertyAccessor;

        public MyResultTransformer(Class<E> resultClass)
        {
            if (resultClass == null)
                throw new IllegalArgumentException("resultClass cannot be null");
            this.resultClass = resultClass;
            propertyAccessor = new ChainedPropertyAccessor(
                    new PropertyAccessor[]
                    {
                            PropertyAccessorFactory.getPropertyAccessor(
                                    resultClass, null),
                            PropertyAccessorFactory
                                    .getPropertyAccessor("field") });
        }

        public Object transformTuple(Object[] tuple, String[] aliases)
        {
            Object result;

            try
            {
                if (setters == null)
                {
                    setters = new Setter[aliases.length];
                    for (int i = 0; i < aliases.length; i++)
                    {
                        String alias = aliases[i];
                        if (alias != null)
                        {
                            setters[i] = propertyAccessor.getSetter(
                                    resultClass, alias);
                        }
                    }
                }
                result = resultClass.newInstance();

                for (int i = 0; i < aliases.length; i++)
                {
                    if (setters[i] != null)
                    {
                        if (tuple[i] instanceof BigDecimal)
                        {
                            setters[i].set(result, ((BigDecimal) tuple[i])
                                    .longValue(), null);
                        }
                        else if (tuple[i] instanceof BigInteger)
                        {
                            setters[i].set(result, ((BigInteger) tuple[i])
                                    .longValue(), null);
                        }
                        else
                        {
                            setters[i].set(result, tuple[i], null);
                        }
                    }
                }
            }
            catch (InstantiationException e)
            {
                throw new HibernateException(
                        "Could not instantiate resultclass: "
                                + resultClass.getName());
            }
            catch (IllegalAccessException e)
            {
                throw new HibernateException(
                        "Could not instantiate resultclass: "
                                + resultClass.getName());
            }

            return result;
        }

        public List transformList(List collection)
        {
            return collection;
        }

    }
分享到:
评论

相关推荐

    Struts2 自定类型转换器(三十四)

    - 使用`@ResultType`或`@Result`注解将转换器与Action的返回类型或结果类型关联。 - 在`struts.xml`配置文件中使用`&lt;conversion&gt;`标签注册转换器,指定对应的转换类和需要转换的类型。 5. **测试和调试** 测试...

    JSF 转换器视频

    在JSF中,每个UI组件都可以关联一个转换器,这样可以处理各种复杂的用户输入,如日期、货币等格式的数据。转换器通过实现`javax.faces.convert.Converter`接口来定义其转换逻辑。 1. **转换器接口**:JSF中的转换器...

    tcl to C++转换器 将tcl代码转换为c++ 亲测可用

    这表明转换器在一定程度上理解了Tcl语法,并能有效地映射到C++语法结构中,但需要注意的是,自动转换工具有时可能无法处理复杂的语言特性,或者不能完全理解特定的代码逻辑,因此在实际使用时,用户可能需要对转换后...

    Mac汇率转换器

    总结起来,“Mac汇率转换器”项目结合了Cocoa框架的界面设计优势和Objective-C的面向对象特性,通过网络请求获取实时汇率,实现用户友好的货币转换功能。开发者在实践中不仅可以深化对Cocoa和Objective-C的理解,也...

    struts2 转换器

    2. **自定义转换器**:如果默认的类型转换不满足需求,我们可以创建自定义的转换器类。这个类需要实现`Converter`接口,并覆盖`convert`方法。然后,通过在Action配置或者全局配置中注册这个转换器,Struts2在处理...

    JSF(转换器+验证器)

    JSF,全称为JavaServer Faces,是Java...这包括了解如何编写转换器和验证器类,如何将它们与JSF组件关联,以及如何处理验证和转换过程中的异常。这样的实践将增强你对JSF框架的理解,提高你在实际开发中的应用能力。

    VSC#_版本转换器

    【VSC#_版本转换器】是一款专门设计用于将Visual Studio 2005项目转换为2010版本的工具。在软件开发过程中,随着Visual Studio版本的更新,开发者可能需要将旧版本的项目升级到新版本以利用更先进的特性和功能。VSC#...

    Unity3D视频转换器TheoraConverter

    - 创建一个VideoClip对象,将.ogv文件关联到该对象。 - 在场景中创建一个VideoPlayer实例,并将VideoClip分配给它的clip属性。 - 设置VideoPlayer的播放模式(例如,循环播放或单次播放)。 - 调整VideoPlayer的预览...

    易语言版迅雷视频转换器源码

    - "迅雷"品牌通常与快速下载服务相关联,因此此转换器可能具备快速处理大文件的能力,利用多线程技术和硬件加速来提升转换速度。 - 另外,"迅雷"也可能意味着它能够充分利用P2P技术,比如从网络中获取已有的转换...

    37E型电力机车转换器烧损原因及改进措施

    从标签来看,电机车和转换器是核心对象,改进措施是解决问题的手段,BMC(假设为“业务持续性管理”或“基础模块化组件”等缩写,但具体含义需要结合上下文来理解)可能是某种特定技术或概念,在这里可能指改进措施...

    C#单位转换器

    【C#单位转换器】是一款基于C#编程语言开发的桌面应用程序,主要目的是提供一个方便用户进行各种基本单位转换的工具。在这个项目中,开发者利用了C#的强大特性和Windows Forms框架来创建一个直观易用的用户界面。...

    关联对象嵌套序列化.md

    当需要将关联对象嵌套序列化时,Django REST framework提供了几种不同的方式来处理外键(ForeignKey)字段的序列化。 - **使用PrimaryKeyRelatedField进行序列化** `PrimaryKeyRelatedField`会将关联对象序列化为...

    SSH笔记-类型转换器和错误信息显示、复杂属性、批量更新模型数据

    当表单提交的数据与控制器方法参数不匹配时,Spring会自动寻找合适的类型转换器进行转换。自定义类型转换器可以解决系统默认转换器无法满足的特定需求,比如处理特殊的日期格式或者货币类型。 接着,我们来看"错误...

    MFC mil/mm转换器

    综上所述,MFC mil/mm转换器是一个利用MFC框架开发的实用工具,它通过简洁的用户界面和精准的转换算法,为需要进行长度单位转换的用户提供便利。在开发过程中,MFC的各类组件和机制都发挥了重要作用,使得软件开发...

    Hibernate注解 关联关系映射注解.docx

    这种情况下,不需要使用`mappedBy`,因为“一”的一方通常是维护关联关系的一方。 多对多的关联关系可以使用`@ManyToMany`注解,Hibernate会自动创建一个中间表来存储两个实体类之间的关联。如果需要自定义中间表的...

    DB4o 将一个对象保存到文件中,然后查询读取

    这与关系型数据库需要将对象转换为表格数据不同,DB4o直接处理对象,提供了更直观的编程模型。 在DB4o中,我们首先需要创建一个配置对象,即`Configuration.java`。这个配置对象允许我们设置数据库的各种属性,如...

    SuperMap Objects .NET 关联图片存储显示

    总的来说,SuperMap Objects .NET 提供了强大的自定义对象功能,允许开发人员将图片等多媒体信息与地图对象关联,实现丰富多样的地图应用。通过二进制流存储图片数据并利用.NET Framework的类库,我们可以轻松地完成...

    GIS数据格式转换器(VC++程序)

    GIS数据格式转换器是利用C++编程语言开发的一款工具,主要功能是将地理信息系统(GIS)中的不同数据格式进行相互转换。在GIS领域,数据格式的多样性常常导致数据交换和处理的复杂性,因此,这样的转换器对于GIS专业...

    PYQT5图片像素转换器源代码

    【PYQT5图片像素转换器源代码】是一个基于Python的图形用户界面(GUI)应用程序,利用了PYQT5库来实现图像像素级别的处理。PYQT5是Python中的一个强大的库,它提供了Qt库的绑定,使得开发者可以用Python编写出功能...

    深入理解持久化对象

    - **瞬态(Transient)**:对象刚被创建出来,还没有与任何Session建立关联,此时的对象不在Session的管理之下。 - **持久化(Persistent)**:当一个瞬态对象被`save()`方法或者`persist()`方法保存后,它就变成...

Global site tag (gtag.js) - Google Analytics