//原代码如下:
import java.lang.reflect.*;
public class ValueCopy{
/**
*
*功能:从第一个POJO(objFirst)类中将值拷贝到第二个POJO(objTwo)中去
*
*@Date:2008-12-08
*
*/
public void valueCopy(Object objFirst,Object objTwo)throws Exception{
Class<?> objFirstClass = objFirst.getClass();
Class<?> objTwoClass = objTwo.getClass();
Field[] field = objTwoClass.getDeclaredFields();
for(int i=0;i<field.length;i++){
String fieldName = field[i].getName();
String firstEdh = fieldName.substring(0,1).toUpperCase();
String setMethodName = "set"+firstEdh+fieldName.substring(1);
String getMethodName = "get"+firstEdh+fieldName.substring(1);
Method getMethod = objFirstClass.getMethod(getMethodName,new Class[]{});
Method setMethod = objTwoClass.getMethod(setMethodName,new Class[]{field[i].getType()});
Object value = getMethod.invoke(objFirst,new Object[]{});
setMethod.invoke(objTwo,new Object[]{value});
}
}
public static void main(String[] args){
UserForm userForm = new UserForm();
userForm.setUsername("狂智");
userForm.setPassword("123456");
userForm.setEmail("ffr@163.com");
userForm.setAge(24);
User user = new User();
try {
new ValueCopy().valueCopy(userForm,user);
Class userClass = user.getClass();
System.out.println ("-------------"+user.getClass().getName()+"-------------");
Field[] field = userClass.getDeclaredFields();
for(int i=0;i<field.length;i++){
String fieldName = field[i].getName();
String firstEdh = fieldName.substring(0,1).toUpperCase();
String getMethodName = "get"+firstEdh+fieldName.substring(1);
Method getMethod = userClass.getMethod(getMethodName,new Class[]{});
Object value = getMethod.invoke(user,new Object[]{});
System.out.println (fieldName+": "+value);
}
System.out.println ("----------------结束----------------");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
分享到:
相关推荐
当我们从数据库读出数据得到ResultSet或RowSet的时候,我们的做法是遍历结果集,然后封装到pojo里面,再封装到List,那么,每次封装是不是很麻烦呢,前段时间小弟看了下反射的东西,试着写了个类,目的在于方便封装...
根据属性名相同, 把一个pojo的属性值付给另一个pojo相同属性名.
通过利用反射API,我们可以轻松地实现这一转换,从而简化编程工作。当然,使用这种方式时要注意性能影响,因为反射操作通常比直接访问成员变量要慢。在大型项目中,可能需要考虑缓存映射结果,或者使用其他优化策略...
POJO转Map的基本思路是利用反射机制获取POJO的所有属性,并将其存储到Map中。具体步骤如下: 1. **判断对象是否为空**:首先检查传入的对象是否为空,如果为空则直接返回null。 2. **创建Map实例**:使用`new ...
在这个"JDBCTemplate+JavaPOJO实现通用DAO"的项目中,我们将探讨如何利用这两者构建一个通用的DAO层。 首先,Java POJO(Plain Old Java Object)是指那些没有特殊约束的简单Java对象,通常用于表示数据库中的实体...
《POJO In Action》是一本深入探讨Plain Old Java Object(POJO)概念和技术的书籍,其核心在于如何在Java开发中有效地使用简单、无框架依赖的对象。POJOs是Java编程中最基本的元素,它们代表了纯粹的面向对象设计,...
Mybatis逆向工程是一种强大的工具,它允许开发者根据数据库中的表结构自动生成对应的Java实体类(POJO)、数据访问对象(DAO)以及Mapper接口和XML配置文件,极大地提高了开发效率,减少了手动编写这些基础代码的...
Mybatis是一款广受欢迎的Java持久层框架,它简化了数据库操作与对象模型之间的映射,提供了灵活的SQL映射和基于XML或注解的...在实际使用中,可以根据项目需求和团队规范进行个性化设置,充分利用其提供的各种功能。
- Axis2还集成了Spring框架,允许更灵活的业务逻辑集成,以及对JSON的支持,扩展了其在不同技术栈中的应用。 2. **Axis2的安装与配置**: - 用户可以从Apache官方网站下载Axis2的最新版本,例如1.4.1。 - 安装...
综上所述,SSM笔记中的POJO部分主要讲解了如何在SpringMVC中利用POJO作为数据载体,以及SpringMVC如何自动进行模型绑定,处理HTTP请求参数,并进行数据验证。了解这些概念和实践,对于开发基于SSM的Java Web应用至关...
- POJO是Java中一个普通的类,没有继承任何特定的框架接口或实现任何特定的规范。它只是一个包含属性(字段)和方法(包括getter和setter)的对象,用于封装业务数据。 - 在数据库操作中,POJO类通常代表数据库中...
在Java Web开发中,SSM(Spring、Spring MVC和MyBatis)是一个常见的技术栈,用于构建高效、灵活的企业级应用程序。在这个“SSM项目实战pojo类”中,我们主要探讨的是数据模型层,也就是POJO(Plain Old Java Object...
本POJO代码生成器采用Java的Swing技术编码实现,是绿色免费工具,可以自由传播。 由于本工具的内部实现较菜,所以还请反编译高手手下留情,让我留几分颜面。^_^ 作者本人只用过Oracle、MySQL、MS SQL Server这三款...
参照https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started的步骤Using jsonschema2pojo within your Java project (embedded)
POJO的主要特征是拥有私有属性和对应的getter/setter方法,用于封装数据,类似于数据传输对象(DTO)或值对象。POJO不包含业务逻辑或持久化逻辑,其主要作用是在不同的层级之间传递数据。在使用Hibernate框架时,...
源码层面,Hibernate Tools是开源的,开发者可以深入研究其生成POJO的实现过程,理解其工作原理,这对于优化自定义的代码生成规则或是扩展工具功能非常有帮助。 **六、总结** 总的来说,Hibernate Tools是Java开发...
在本篇“Struts2 Pojo(六)”中,我们将深入探讨Struts2如何利用Pojo来增强其灵活性和可维护性。 首先,让我们理解什么是Pojo。Pojo是一个没有特殊限制的普通Java对象,不包含任何框架特定的代码,如注解或接口...
### Hibernate生成POJO详解 #### 一、简介 在Java开发中,Hibernate作为一个...此外,熟悉Hibernate的核心概念和技术细节对于充分利用其功能至关重要。希望本文能帮助您更好地理解和掌握Hibernate生成POJO的方法。
netty pojo netty pojo替换 channelbuffer