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

『FLEX』Java的pojo对象转成Flex的vo对象

    博客分类:
  • Flex
阅读更多

在使用openamf的类映射功能时,一般需要在as端也定义和java pojo类似的对象,用于类的映射。

有关使用openamf的类映射,请见之前的《openAMF自定义类映射(custom-class-mapping)的使用

如果手工去写这些和java对应的flex vo对象比较麻烦,这里用java写了个简单的as vo对象生成的工具,代码如下:

/**

*/
package com.nstar.base.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;

import org.apache.commons.lang.StringUtils;


/**
* @author Administrator
*
*/
public class VoUtils {
public VoUtils(){}

//根据java类对象的类型返回vo类型
public static String getClassType(Class c){
   String typeName = c.getSimpleName();
  
   if (typeName.equals("String") || typeName.equals("Date")) {
    return typeName;
   }else if (typeName.equals("BigDecimal") || typeName.equals("Decimal") ||
      typeName.equals("Double")) {
    return "Number";
   }else if (typeName.equals("Integer")) {
    return "int";
   }else if (typeName.equals("Boolean")) {
    return "boolean";
   }else {
    return "*";//其它类型的设置为未知类型
   }
   
}
//重复c字符count次,用于格式化生成的as文件
public static String repeat(String c, int count){
   String temp = "";
   for(int i = 0;i<count ;i++){
    temp += c;
   }
  
   return temp;
}
/**
* 生成as文件
* @param pojoName java对象名称
* @param packageName flex中vo对象的包名
* @throws ClassNotFoundException
* @throws IOException
*/
public static void generateAsFile(String pojoName, String packageName, String folder)
    throws ClassNotFoundException, IOException {
   Class c = Class.forName(pojoName);
   Field[] fields =c.getDeclaredFields();
  
   //as的vo对象名称结尾加上VO标志
   File f = new File(folder+c.getSimpleName()+"VO.as");
   BufferedWriter bw = new BufferedWriter(
           new FileWriter(f));
   //包名,没有设置包名就取和java pojo一样的包名
   if (StringUtils.isEmpty(packageName)){
    bw.write("package "+c.getPackage().getName()+"\n{\n");
   }else{
    bw.write("package "+packageName+"\n{\n");
   }
  
   //写类
   bw.write(repeat(" ",4)+"public class "+c.getSimpleName()+"VO\n");
   bw.write(repeat(" ",4)+"{\n");
  
   //写属性
   for(int i=0;i<fields.length;i++){
    Class fieldType = fields[i].getType();
    String typeName = getClassType(fieldType);
    bw.write(repeat(" ",8)+"private var _"+fields[i].getName()+":"+typeName+";\n");
   }
  
   bw.write("\n\n\n");
   //写空的构造函数
   bw.write(repeat(" ",8)+"public function "+c.getSimpleName()+"VO(){}\n\n");
  
   //写 setter/getter 方法
   for(int i=0;i<fields.length;i++){
    Class fieldType = fields[i].getType();
    String typeName = getClassType(fieldType);
    //setter
    bw.write(repeat(" ",8)+"public function set "+fields[i].getName()+"(value:"+typeName+"):void{\n");
    bw.write(repeat(" ",12)+"this._"+fields[i].getName()+" = value;\n");
    bw.write(repeat(" ",8)+"}\n\n");
    //getter
    bw.write(repeat(" ",8)+"public function get "+fields[i].getName()+"():"+typeName+"{\n");
    bw.write(repeat(" ",12)+"return this._"+fields[i].getName()+";\n");
    bw.write(repeat(" ",8)+"}\n\n\n");
   
   }
   bw.write(repeat(" ",4)+"}\n");
   bw.write("}");
   bw.close();  
}

//测试,写了个测试
public static void main(String[] args) throws ClassNotFoundException, IOException {
   // TODO Auto-generated method stub
   String[] pojos = {
     "com.nstar.model.orderexpress.Area",
     "com.nstar.model.orderexpress.FoodType",
     "com.nstar.model.orderexpress.Holiday",
     "com.nstar.model.orderexpress.ItemSpec",
     "com.nstar.model.orderexpress.ItemSpecType",
     "com.nstar.model.orderexpress.Menu2Rest",
     "com.nstar.model.orderexpress.OrderInfo",
     "com.nstar.model.orderexpress.OrderInfoExp",
     "com.nstar.model.orderexpress.OrderMenu",
     "com.nstar.model.orderexpress.OrderState",
     "com.nstar.model.orderexpress.OrderType",
     "com.nstar.model.orderexpress.Repository",
     "com.nstar.model.orderexpress.RepositoryType",
     "com.nstar.model.orderexpress.RestInfo",
     "com.nstar.model.orderexpress.UserInfo",
     "com.nstar.model.orderexpress.UserLevel",
     "com.nstar.model.orderexpress.UserType"
     };
   for(int i=0;i<pojos.length;i++){
    //Class c = Class.forName(pojos[i]);
    //System.out.println("registerClassAlias('"+pojos[i]+"',com.nstar.orderexpress.vo."+c.getSimpleName()+"VO);");
    VoUtils.generateAsFile(pojos[i],"com.nstar.orderexpress.vo","C:/temp/");
   }
  
}

}

测试时可以随便找个Java对象来测试,下面是其中生成的一个文件(OrderTypeVO)的内容:

package com.nstar.orderexpress.vo
{
    public class OrderTypeVO
    {
        private var _orderTypeId:String;
        private var _name:String;
        private var _remarks:String;

 

        public function OrderTypeVO(){}

        public function set orderTypeId(value:String):void{
            this._orderTypeId = value;
        }

        public function get orderTypeId():String{
            return this._orderTypeId;
        }


        public function set name(value:String):void{
            this._name = value;
        }

        public function get name():String{
            return this._name;
        }


        public function set remarks(value:String):void{
            this._remarks = value;
        }

        public function get remarks():String{
            return this._remarks;
        }


    }
}

转自:http://hi.baidu.com/xiaosa1984/blog/item/4a898df028f8eca7a50f52fa.html

 

王李丹

 

分享到:
评论

相关推荐

    java Pojo转Map

    在Java编程中,Pojo(Plain Old Java Object)是一种简单的对象模型,通常用于表示数据实体。Map接口则是Java集合框架的一部分,它提供了键值对的数据存储方式,方便数据的存取。将Pojo对象转换为Map,可以简化数据...

    oracle 数据表转成java pojo

    连oracle 数据库,将指定表转为java pojo 类 的 java demo

    Java的几种对象(PO-VO-DAO-BO-POJO)解释

    ### Java的几种对象详解:PO-VO-DAO-BO-POJO #### 一、PO:Persistant Object(持久对象) 持久对象(Persistent Object,简称PO),主要用于与数据库中的表进行映射。一个简单的PO对象可以代表数据库表中的一条...

    java实现对象转化为get请求的param参数String字符串

    java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...

    JDBCTemplate+JavaPOJO实现通用DAO

    首先,Java POJO(Plain Old Java Object)是指那些没有特殊约束的简单Java对象,通常用于表示数据库中的实体。在本项目中,每个POJO类会对应数据库中的一个表,属性与表的字段相对应,提供getter和setter方法以便于...

    java实现相同属性名称及相似类型的pojo、dto、vo等互转操作

    Java 实现相同属性名称及相似类型的 POJO、DTO、VO 等互转操作 Java 实现相同属性名称及相似类型的 POJO、DTO、VO 等互转操作是 Java 编程中一个常见的问题。POJO、DTO、VO 等都是 Java 中常用的类别,但是它们之间...

    Feign发送Get请求时,采用POJO对象传递参数的最终解决方案.docx

    在使用Feign客户端发送GET请求时,如果需要传递复杂的查询条件或分页参数,开发人员往往会倾向于使用Java POJO(Plain Old Java Object)对象作为方法参数。例如: ```java @FeignClient("microservice-provider-...

    用pojo对象作birt的数据源

    本话题将详细讲解如何利用Java中的POJO(Plain Old Java Object)对象作为BIRT报告的数据源,从而实现更加灵活且高效的数据绑定。 首先,理解POJO的概念至关重要。POJO是一种简单的Java类,它不包含任何特殊的框架...

    关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    "关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释" 在 Java 中,PO、VO、TO、BO、DAO、POJO 是六个重要的概念,它们之间存在着紧密的关系,本文将对它们进行详细的解释。 首先,PO(Persistent Object)是...

    Flex Java通信实例

    例如,ActionScript对象可以映射到Java的POJO(Plain Old Java Object),使得数据交换更加便捷。 5. **事件驱动的通信模型** Flex与Java之间的通信基于事件模型,当Java服务完成操作后,会触发事件,Flex客户端...

    POJO转Map.txt

    在Java开发中,POJO(Plain Old Java Object)指的是一个简单的Java对象,通常用来表示应用程序中的数据模型或业务实体。POJO没有特定的框架依赖,它仅仅是一个具有属性及对应的getter和setter方法的普通Java类。...

    java的几种对象(PO_VO_DAO_BO_POJO)解释

    简称PO)、值对象(Value Object,简称VO)、数据访问对象(Data Access Object,简称DAO)、业务对象(Business Object,简称BO)和平凡的Java对象(Plain Ordinary Java Object,简称POJO)。这些对象在不同的场景...

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    Java微信平台所有的POJO对象和常量

    微信平台中所有的接受信息,发送信息,按钮菜单等POJO对象,还有用到的常量。 下面是个抽象出来的Message父类,下面还有ImageRequestMessage等子类 @XmlRootElement(name = "xml") @XmlAccessorType(XmlAccessType....

    JSON 转化为java对象

    #### 三、技术实现:JSON 转 Java 对象的方法 **1. 使用第三方库** 市场上有许多成熟的第三方库可以帮助开发者轻松实现 JSON 与 Java 对象之间的转换,如 Jackson、Gson 和 Fastjson 等。 **2. 自定义转换器** ...

    java对象集合转json格式

    这篇博客(尽管链接不可用)可能涉及了如何将Java中的对象集合,如ArrayList、LinkedList或HashSet等,转换成JSON字符串。接下来,我们将详细探讨这个过程。 首先,我们需要一个JSON库来帮助进行转换。在Java中,...

    java根据数据库自动生成vo 类

    MyBatis 提供了`mybatis-generator`插件,它可以解析数据库表结构并生成Java POJO(Plain Old Java Object)类,这些类可以作为VO类使用。在MyBatis的配置文件中定义数据库连接和表映射,然后运行生成器,即可得到...

    java术语(PO/POJO/VO/BO/DAO/DTO)

    VO通常用于展示层,例如在Web应用中,从前端传到后端或者从前端返回到前端的数据就封装在VO对象中。 4. BO(Business Object,业务对象) BO代表了业务逻辑层中的对象,它包含了业务规则和操作。BO会调用DAO来与...

    Java的(PO,VO,TO,BO,DAO,POJO)解释

    "Java的(PO,VO,TO,BO,DAO,POJO)解释" Java作为一门流行的编程语言,在软件开发中扮演着重要角色,其中一些关键概念和技术为开发者提供了方便快捷的开发体验。本篇文章将对Java中的PO、VO、TO、BO、DAO、POJO等概念...

    JAVA中的POJO、VO、PO、DO、DTO都是什么?有什么区别?

    1. POJO(Plain Old Java Object):POJO是一个通用术语,指没有特定框架限制的简单Java对象。它通常包含了业务逻辑和数据属性,不包含任何特定框架的注解或接口。POJOs被广泛用于表示业务实体,可以作为ORM(对象...

Global site tag (gtag.js) - Google Analytics