`

java通过反射批量生成set设置值

    博客分类:
  • JAVA
阅读更多
对于大批量属性的类,里面有有很多属性,这个时候一个个写还是很痛苦的,通过java反射来获取这些类里面的方法,从而得到自己想要的set属性的字符串再好不过了。

下面是一个JDOM设置值的,直接反射生成即可
project.setSeatPicUrl(node.getChildText("seatPicUrl"));
project.setId(node.getChildText("id"));
project.setCategoryID(node.getChildText("categoryID"));
project.setSonCategoryID(node.getChildText("sonCategoryID"));
project.setSiteID(node.getChildText("siteID"));
project.setSiteName(node.getChildText("siteName"));
project.setSubHead(node.getChildText("subHead"));
project.setIsETicket(node.getChildText("isETicket"));
project.setMinPrice(node.getChildText("minPrice"));
project.setMaxPrice(node.getChildText("maxPrice"));
project.setPriceStr(node.getChildText("priceStr"));
project.setSellEndTime(node.getChildText("sellEndTime"));
project.setShowTime(node.getChildText("showTime"));
project.setCanSell(node.getChildText("canSell"));
project.setIsTest(node.getChildText("isTest"));
project.setVenueName(node.getChildText("venueName"));
project.setVenueID(node.getChildText("venueID"));
project.setIsXuanZuo(node.getChildText("isXuanZuo"));
project.setUpdateTime(node.getChildText("updateTime"));
project.setPerformIdList(node.getChildText("performIdList"));
project.setName(node.getChildText("name"));
project.setDescription(node.getChildText("description"));
project.setStatus(node.getChildText("status"));


package com.proxy.reflect;

/**
 * @author: (le.qiao)
 * @e-mail: qiaolevip@gmail.com
 * @myblog: <a href="http://qiaolevip.iteye.com">http://qiaolevip.iteye.com</a>
 * @date: 2012-11-30
 * 
 */
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.proxy.bean.Project;

public class ReflectUser {

	public static void main(String[] args) throws Exception {
		/*
		 * 实列化类 方法2
		 */
		Project bean = new Project();
		// bean.setAge(100);
		// bean.setBirthday(new Date());
		// bean.setName("武汉");

		// 得到类对象
		@SuppressWarnings("rawtypes")
		Class cls = (Class) bean.getClass();

		/*
		 * 得到类中的所有属性集合
		 */
		Field[] fs = cls.getDeclaredFields();
		for (int i = 0; i < fs.length; i++) {
			Field f = fs[i];
			f.setAccessible(true); // 设置些属性是可以访问的
			// Object val = f.get(bean);// 得到此属性的值

			// System.out.println("name:" + f.getName() + "\t value = " + val);

			String type = f.getType().toString();// 得到此属性的类型
			if (type.endsWith("String")) {
				// System.out.println(f.getType() + "\t是String");
				f.set(bean, "12");        // 给属性设值
			} else if (type.endsWith("int") || type.endsWith("Integer")) {
				// System.out.println(f.getType() + "\t是int");
				f.set(bean, 12);       // 给属性设值
			} else {
				// System.out.println(f.getType() + "\t");
			}

		}

		/*
		 * 得到类中的方法
		 */
		Method[] methods = cls.getMethods();
		for (int i = 0; i < methods.length; i++) {
			Method method = methods[i];
			// if (method.getName().startsWith("get")) {
			// System.out.print("methodName:" + method.getName() + "\t");
			// System.out.println("value:" + method.invoke(bean));// 得到get 方法的值
			// }

			if (method.getName().startsWith("set")) {
				System.out.print(firstToLower(cls.getSimpleName()) + "." + method.getName() + "(node.getChildText(\""
						+ firstToLower(method.getName().substring(3)) + "\"));\n");
			}
		}
	}

	/**
	 * @param val
	 * @return
	 */
	public static String firstToLower(String val) {
		return val.substring(0, 1).toLowerCase() + val.substring(1);
	}

}


package com.proxy.bean;

import java.util.ArrayList;

/**
 * @author: (le.qiao)
 * @e-mail: qiaolevip@gmail.com
 * @myblog: <a href="http://qiaolevip.iteye.com">http://qiaolevip.iteye.com</a>
 * @date: 2012-8-13
 * 
 */
public class Project {

	// 项目ID
	private String id;

	// 项目名称
	private String name;

	// 所属父类别
	private String categoryID;

	// 所属子类别
	private String sonCategoryID;

	// 城市ID
	private String siteID;

	// 城市名称
	private String siteName;

	// 项目详情描述
	private String description;

	// 一句话描述
	private String subHead;

	// 是否支持电子票(1-支持;0-不支持)
	private String isETicket;

	// 最低价格
	private String minPrice;

	// 最高价格
	private String maxPrice;

	// 价格快照
	private String priceStr;

	// 销售结束时间
	private String sellEndTime;

	// 演出时间
	private String showTime;

	// 是否可以购买(1-可以购买;0-不允许购买)
	private String canSell;

	// 是否是测试项目(1-是,0-不是)
	private String isTest;

	// 场馆名称
	private String venueName;

	// 场馆ID
	private String venueID;

	// 是否支持选座(1-支持选座;0-不支持选座)
	private String isXuanZuo;

	// 相关艺人信息节点
	// private String artistinfo;

	// 最后更新时间
	private String updateTime;

	// 商品状态(3,销售中;4,结束;7,预定;8,预售;10,测试;6,禁止显示)
	private String status;

	/** 座位表图片路径 */
	private String seatPicUrl;

	private List<String> performIdList = new ArrayList<String>();

	public String getSeatPicUrl() {
		return seatPicUrl;
	}

	public void setSeatPicUrl(String seatPicUrl) {
		this.seatPicUrl = seatPicUrl;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCategoryID() {
		return categoryID;
	}

	public void setCategoryID(String categoryID) {
		this.categoryID = categoryID;
	}

	public String getSonCategoryID() {
		return sonCategoryID;
	}

	public void setSonCategoryID(String sonCategoryID) {
		this.sonCategoryID = sonCategoryID;
	}

	public String getSiteID() {
		return siteID;
	}

	public void setSiteID(String siteID) {
		this.siteID = siteID;
	}

	public String getSiteName() {
		return siteName;
	}

	public void setSiteName(String siteName) {
		this.siteName = siteName;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getSubHead() {
		return subHead;
	}

	public void setSubHead(String subHead) {
		this.subHead = subHead;
	}

	public String getIsETicket() {
		return isETicket;
	}

	public void setIsETicket(String isETicket) {
		this.isETicket = isETicket;
	}

	public String getMinPrice() {
		return minPrice;
	}

	public void setMinPrice(String minPrice) {
		this.minPrice = minPrice;
	}

	public String getMaxPrice() {
		return maxPrice;
	}

	public void setMaxPrice(String maxPrice) {
		this.maxPrice = maxPrice;
	}

	public String getPriceStr() {
		return priceStr;
	}

	public void setPriceStr(String priceStr) {
		this.priceStr = priceStr;
	}

	public String getSellEndTime() {
		return sellEndTime;
	}

	public void setSellEndTime(String sellEndTime) {
		this.sellEndTime = sellEndTime;
	}

	public String getShowTime() {
		return showTime;
	}

	public void setShowTime(String showTime) {
		this.showTime = showTime;
	}

	public String getCanSell() {
		return canSell;
	}

	public void setCanSell(String canSell) {
		this.canSell = canSell;
	}

	public String getIsTest() {
		return isTest;
	}

	public void setIsTest(String isTest) {
		this.isTest = isTest;
	}

	public String getVenueName() {
		return venueName;
	}

	public void setVenueName(String venueName) {
		this.venueName = venueName;
	}

	public String getVenueID() {
		return venueID;
	}

	public void setVenueID(String venueID) {
		this.venueID = venueID;
	}

	public String getIsXuanZuo() {
		return isXuanZuo;
	}

	public void setIsXuanZuo(String isXuanZuo) {
		this.isXuanZuo = isXuanZuo;
	}

	// public String getArtistinfo() {
	// return artistinfo;
	// }
	//
	// public void setArtistinfo(String artistinfo) {
	// this.artistinfo = artistinfo;
	// }

	public String getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(String updateTime) {
		this.updateTime = updateTime;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public List<String> getPerformIdList() {
		return performIdList;
	}

	public void setPerformIdList(List<String> performIdList) {
		this.performIdList = performIdList;
	}

}
分享到:
评论

相关推荐

    仿hibernate动态生成sql保存对象

    1. **反射机制**:利用Java的反射API解析对象的属性,获取字段名和值,这是构建SQL语句的基础。例如,`Field[] fields = obj.getClass().getDeclaredFields();`可以获取到对象的所有字段。 2. **SQL构造**:根据...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     9.4.2 通过StatelessSession来进行批量操作  9.4.3 通过HQL来进行批量操作  9.4.4 直接通过JDBC API来进行批量操作  9.5 使用元数据  9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成...

    JAVA开发总结.pdf

    9. **Java反射**:Java反射机制允许在运行时检查和操作类、接口、字段和方法,可以动态调用方法,创建对象等,提供了强大的编程灵活性。 10. **Java枚举**:枚举类型是Java 5引入的,用于定义一组固定的常量,增强...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6...

    JAVA讲义 比较基础一级的东西

    15. **反射机制**:Java反射机制允许在运行时动态地获取类的信息并操作类的对象,增强了程序的灵活性。 16. **泛型**:泛型引入了类型安全,允许在编译时检查类型,避免强制类型转换。 17. **注解(Annotation)**...

    excel工具,利用反射

    根据提供的文件信息,我们可以总结出以下关于“利用...此工具可以广泛应用于需要批量处理Excel数据的场景,例如数据导入、报表生成等。通过反射技术,可以灵活地支持不同类型的对象,大大提高了代码的复用性和扩展性。

    Java软件开发实战 Java基础与案例开发详解 10-9 练习题 共5页.pdf

    #### 15.2 使用Java反射机制 通过反射,可以在运行时获取类的构造函数、方法、字段等信息。 #### 15.3 反射与动态代理 动态代理利用反射生成代理对象,可以用来增强或扩展对象的功能。 ### 十四、Java标注 ####...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     9.4.2 通过StatelessSession来进行批量操作  9.4.3 通过HQL来进行批量操作  9.4.4 直接通过JDBC API来进行批量操作  9.5 使用元数据  9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     9.4.2 通过StatelessSession来进行批量操作  9.4.3 通过HQL来进行批量操作  9.4.4 直接通过JDBC API来进行批量操作  9.5 使用元数据  9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     9.4.2 通过StatelessSession来进行批量操作  9.4.3 通过HQL来进行批量操作  9.4.4 直接通过JDBC API来进行批量操作  9.5 使用元数据  9.6 通过Hibernate调用存储过程  9.7 小结  9.8 思考题 第10章 映射组成...

    eclipse 自动 getter setter 注释

    提供的`GetterSetterUtil.class`和`GetterSetterUtil.java`可能是用于批量生成getter和setter的辅助工具类。通常,这样的工具类会包含静态方法,可以接受类的Class对象作为参数,然后遍历所有字段并生成对应的...

    28个java常用的工具类.rar

    2. **集合操作**:Java集合框架包括`List`、`Set`、`Map`等接口,但有时我们需要对集合进行更复杂的操作,如排序、去重、合并等。工具类可能提供这些便捷的集合处理方法。 3. **日期与时间**:处理日期和时间在Java...

    Java经典问题答案(带书签).pdf

    - 线程的优先级通过`setPriority()`方法设置。 - 优先级高的线程更有可能被调度执行。 **线程获取名称** - 线程名称通过`Thread.setName()`方法设置。 - 获取线程名称使用`Thread.getName()`方法。 **线程的五个...

    Java极品学习资料

    - Java通过自动垃圾回收管理内存,回收不再使用的对象所占的空间。 - 垃圾回收算法包括但不限于标记-清除、复制、分代收集等。 - 实现细节及优化策略。 **==与equals的区别** - `==`用于比较基本类型的值或引用类型...

    Java经典面试题+答案(带书签)pdf

    - Eclipse是一个流行的Java开发工具,可以通过简单的设置来提高开发效率。例如,可以设置自动导入包、代码格式化规则等。 #### 二、基础知识 **1. 主方法中args是什么意思** - `args`是`main`方法的一个参数,...

    JAVA面试题总汇:j2ee面试知识.pdf

    - **Java集合框架:** List、Set、Map等集合类的原理和使用场景,以及它们的子类如ArrayList、HashMap的内部结构和性能差异。 - **Java I/O操作:** 输入输出流的处理、NIO和IO的区别以及异步I/O的使用。 - **多线程...

    fastjson.rar

    1. 使用预编译:通过`JSON.parseObject(json, TypeReference&lt;T&gt; typeReference)`可以避免反射,提高性能。 2. 批量处理:对于大量JSON数据,使用`JSONArray.parseArray(String text, Class&lt;T&gt; clazz)`批量解析,比...

    DWR开发步骤相关整理

    你可以手动编辑此文件,或者让DWR自动通过反射机制生成。 4. **JavaScript调用** - 引入`dwr-engine.js`和`dwr-init.js`到你的HTML页面,然后就可以在JavaScript中使用DWR API了。 - 使用DWR的`execute`函数,...

    mybatis源码jar包

    在运行时,MyBatis会通过`MapperProxyFactory`生成一个代理类来执行Mapper接口的方法,这个过程涉及到反射和动态代理技术。 **4. SqlSession与Executor** `SqlSession`是MyBatis的主要工作接口,用于执行SQL操作。...

Global site tag (gtag.js) - Google Analytics