`
dchaoxiong
  • 浏览: 182836 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

javabean对象自动赋值给另一个javabean对象

阅读更多
把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to   

   public static Object convertBean2Bean(Object from, Object to) { 
        try { 
            BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass()); 
            PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors(); 

            for (PropertyDescriptor p : ps) { 
               Method getMethod = p.getReadMethod(); 
               Method setMethod = p.getWriteMethod(); 
               if (getMethod != null && setMethod != null) { 
                   try { 
                      Object result = getMethod.invoke(from); 
                      setMethod.invoke(to, result); 
                   } catch (Exception e) { 
                      // 如果from没有此属性的get方法,跳过 
                      continue; 
                   } 
               } 
            } 
        } catch (Exception e) { 
           e.printStackTrace(); 
        } 

        return to; 
    } 

    /** 
     * 不支持to继承(to是其他bean的子类) 
     */ 
   public static Object coverBean2Bean(Object from, Object to) { 
        Class fClass = from.getClass(); 
        Class tClass = to.getClass(); 
        // 拿to所有属性(如果有继承,父类属性拿不到) 
        Field[] cFields = tClass.getDeclaredFields(); 
        try { 
            for (Field field : cFields) { 
               String cKey = field.getName(); 
               // 确定第一个字母大写 
               cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1); 

               Method fMethod; 
               Object fValue; 
               try { 
                    fMethod = fClass.getMethod("get" + cKey);// public方法 
                    fValue = fMethod.invoke(from);// 取getfKey的值 
               } catch (Exception e) { 
                 // 如果from没有此属性的get方法,跳过 
                 continue; 
               } 

                try { 
                    // 用fMethod.getReturnType(),而不用fValue.getClass() 
                    // 为了保证get方法时,参数类型是基本类型而传入对象时会找不到方法 
                    Method cMethod = tClass.getMethod("set" + cKey, fMethod.getReturnType()); 
                    cMethod.invoke(to, fValue); 
                } catch (Exception e) { 
                    // 如果to没有此属性set方法,跳过 
                    continue; 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 

        return to; 
    } 


   static final String spare = "======================================================\r\n"; 

   /**      * 打印bean信息 
     */ 
   public static void printInvoke(Object object) { 
      Method[] ms = object.getClass().getMethods(); 
      String str = spare; 
      str += "start log object: " + object.getClass().getSimpleName() + "\r\n"; 
      str += spare; 
      System.out.print(str); 

      for (int i = 0; i < ms.length; i++) { 
         if (ms[i].getName().indexOf("get") != -1 
             && !ms[i].getName().equals("getClass")) { 
             try { 
                 System.out.println(ms[i].getName() + " = " 
                 + ms[i].invoke(object)); 
             } catch (Exception e) { 
                 e.printStackTrace(); 
             } 
         } 
      } 

     System.out.println(spare); 
   } 

 

分享到:
评论

相关推荐

    利用反射实现JavaBean 的自动赋值

    另一个是要填充的JavaBean对象。 1. **方法签名**:`public static void setFormBean(HttpServletRequest request, Object bean)`。 2. **反射获取方法**:使用`getMethods()`获取JavaBean的所有公共方法。 3. **...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    `BeanUtils.populate()`方法将Map中的数据自动赋值给了`user`对象。 在实际开发中,Apache Commons BeanUtils库提供了BeanUtil工具类。你可以在项目中引入这个库,然后就可以使用`BeanUtils`类提供的方法。当然,...

    表单为JavaBean赋值

    总结,表单为JavaBean赋值是Java Web开发中的常见操作,涉及HTML表单、HTTP请求处理、JavaBean以及可能的框架支持。熟练掌握这一过程对于构建交互式的Web应用至关重要。同时,了解和运用水印技术可以增强对数字资产...

    前台字符串赋值给JavaBean属性自动类型转换

    例如,如果我们有一个前端传来的JSON字符串,可以先将其转化为Java对象,然后利用`BeanUtils.copyProperties()`将这个对象的属性赋值给对应的JavaBean实例。 ```java String jsonString = "{'name':'张三', 'age':...

    表单数据自动封装到javaBean中

    例如,Angular的`ngModel`指令可以将表单字段与模型对象关联,提交时自动转换为JSON发送给服务器。 5. **错误处理**: 自动封装过程中可能会出现数据类型不匹配、必填项缺失等错误。框架通常会提供异常处理机制,...

    javabean基础知识

    它实际上是一个满足特定条件的Java对象,具体包括以下特点: - **可序列化(Serializable)**:这使得JavaBean可以被持久化,并在网络上传输。 - **具有无参构造函数**:这是JavaBean的基本要求之一,确保可以通过...

    Java面向对象(基础)- 属性赋值过程、JavaBean和UML类图

    - 具有一个无参构造函数。 - 属性私有化,提供getter和setter方法进行访问控制。 - 可选:实现Serializable接口以支持序列化。 JavaBean在Java应用程序和Web开发中广泛使用,作为数据传输对象(DTO)或模型对象...

    javaBean存入数据库

    例如,如果我们有一个简单的User对象,可以这样定义: ```java public class User { private String name; private int age; public User() {} public String getName() { return name; } public void ...

    WEB应用技术 JavaBean技术应用

    在`User.java`中,我们定义了一个JavaBean类,它代表了一个用户对象。这个类有两个私有属性:`userName`和`userPass`,分别对应用户的用户名和密码。JavaBean通常包含getter和setter方法,用于访问和修改这些属性的...

    javabean留言小项目

    总之,"javabean留言小项目"是一个实践JavaBean基本特性和功能的实例,它展示了如何使用JavaBean封装数据并进行数据交换,有助于加深对JavaBean的理解和应用。在实际开发中,JavaBean是构建可复用、模块化组件的重要...

    xml与javabean的转换

    这个方法通常接收一个XML字符串作为参数,并根据预先定义的映射规则,解析XML中的元素和属性,将其赋值给JavaBean的对应属性。映射规则可以是硬编码的,也可以通过注解或其他配置文件来指定。一旦解析完成,`fromXml...

    javabean 学习(适合初学者)

    总之,JavaBean 是一个非常适合初学者学习的概念,它不仅有助于理解面向对象编程的基本原理,而且对于日后从事 Java 应用程序开发工作也大有裨益。通过深入学习 JavaBean 的概念、特点以及应用场景,可以帮助开发者...

    JavaBean总结

    在JavaBean规范中,一个JavaBean是一个公共的Java类,具备特定的结构和行为。 **JavaBean基础知识** 1. **什么是组件?** 组件是软件开发中的一个概念,它代表一个具有独立功能的单元,可以被其他程序或系统使用。...

    javabean源码

    JavaBean是Java编程语言中的一个组件,符合JavaBeans规范的类。它具有良好的封装性,通常有公有的构造器,私有的属性,以及用于访问这些属性的getter和setter方法。此外,JavaBean还需要满足序列化,即实现...

    java+servlet+javabean实验报告(6)

    4. `&lt;jsp:setProperty&gt;`:设置JavaBean属性的值,通常与`&lt;jsp:useBean&gt;`配合使用,用于给JavaBean的属性赋值。 5. `&lt;jsp:getProperty&gt;`:用于获取JavaBean的属性值并将其显示在页面上。 二、中文乱码问题 在处理...

    JavaBean讲解(上)——代码+笔记

    例如,使用EL将请求参数赋值给JavaBean: ```jsp user.setUsername(request.getParameter("username")); user.setPassword(request.getParameter("password")); %&gt; ``` 此外,JavaBean还可以配合BeanUtils工具...

    使用javabean封装数据库操作1.rar_bean_javabean_javabean 数据库_planet7r1

    通过迭代ResultSet,我们可以调用setter方法将每一行数据赋值给JavaBean的属性。 4. **CRUD操作**:JavaBean也可以帮助我们实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据库记录。例如,...

    BeanUtilsBean对象复制使用(类型可以自动转化)

    对象复制是指将一个对象的属性值复制到另一个对象的过程,通常用于创建新对象或者初始化对象。`BeanUtilsBean.copyProperties()`方法是实现此功能的关键,它允许我们将一个JavaBean的所有属性值复制到另一个具有相同...

    javabeanbeanutils

    2. **复制属性**:`copyProperties()`方法允许你将一个JavaBean的所有属性复制到另一个JavaBean,这在对象初始化或对象克隆场景中非常有用。 3. **反射操作**:BeanUtils库利用Java的反射机制,能够在运行时动态地...

    javaBean登录

    我们可以通过`request.getParameter()`方法获取到这些参数,并将它们赋值给JavaBean对象: ```jsp UserBean user = new UserBean(); user.setUsername(request.getParameter("username")); user.setPassword...

Global site tag (gtag.js) - Google Analytics