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

利用反射来处理多参数对象的数据处理

 
阅读更多

最近项目遇到一个问题,就是客户需要我们存储一个表单的数据,而那个表单有40个数据!!!在前台我们使用Struts2的ModelDriven来获取对象,但往数据库中存就成了问题。因为它有20个字段是text类型,如果将null传过去会报varbinary转换text类型错误。(实在不知道这个varbinary是哪里冒出来的)。所以我们打牌一次次的判定获得的数据,如果为null,就赋值为“”。但是40个字段的get判定,要写很长时间,所以我们就用了一下反射处理。

 

	//判断字段是否为空,如果是,赋值为“”
	private void changeNull(RecordTemplate recordTemplate){
		//得到RecordTemplate所有方法
		Method[] methods  = recordTemplate.getClass().getMethods();
		System.out.println(methods.length);
		for(int i=0;i<methods.length;i++){
			String name = methods[i].getName();
			//如果方法名以getParam为开始,那就是我们要的方法
			if(name.indexOf("getParam")>=0){
				try {
					//如果该数据为空
					if(methods[i].invoke(recordTemplate)==null){
						String isName = name.substring(3);
						System.out.println(isName);
						try {
							//得到该get方法对应的set方法
							Method method = recordTemplate.getClass().getMethod

("set"+isName, String.class);
							//使用对应的set方法赋值为“”
							method.invoke(recordTemplate, "");
						} catch (SecurityException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (NoSuchMethodException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	} 
这样,就可以把这个bean实体的所有get方法遍历一遍,如果数据为null,就赋值为“”。
 

 

分享到:
评论

相关推荐

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

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

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

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

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

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

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

     B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件  C.1 创建带有@hibernate标记的Java源文件  C.2 建立项目的目录结构  C.3 运行XDoclet工具 附录D 发布和运行netstore应用  D.1 运行...

    Spring面试题

    Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 ☆ Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    本书为学校教学量身定做,供高校面向对象技术相关课程使用,对于缺乏项目实战经验的程序员来说可用于快速积累项目开发经验。 本书是中南大学精品教材建设中的一本特色教材,为高校计算机相关专业提供面向对象技术和...

    JavaScript王者归来part.1 总数2

     7.2.3 反射机制--枚举对象属性   7.3 对象的构造   7.3.1 构造函数--一个双精度浮点数封装类的例子   7.3.2 缺省构造和拷贝构造   7.3.3 对象常量   7.4 对象的销毁和存储单元的回收   7.5 JavaScript...

    通用工具类

    8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中的role的name属性进行排序,method="role.name") 9.JVM参数获取工具 10.Java对象比较、...

    Java开发技术大全 电子版

    9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取成员方法信息295 9.6.3获取构造方法信息296 9.6.4获取类的成员属性297 9.6.5根据方法的名称来执行方法299 9.6.6创建新的...

    asp.net知识库

    利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web...

    JAVA_API1.6文档(中文)

    java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....

    支持多数据库的ORM框架ef-orm.zip

    依赖于动态反射框架,内部数据处理上的开销几乎可以忽略。操作性能接近JDBC水平。对比某H开头的框架,在写入操作上大约领先30%,在大量数据读取上领先50%以上。更多的性能调优手段 debug模式下提供了大量性能日志,...

    疯狂JAVA讲义

    学生提问:我们只是创建了一个Ostrich对象时,哪来的Bird对象? 147 5.6.4 调用父类构造器 148 学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过? 150 5.7 多态 151 5.7.1 多态性 ...

    【。net 专业】 面试题

    利用反射,配置 将类于数据库表映射 7.用sealed修饰的类有什么特点 sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 sealed ...

    WebGL编程指南

    正确处理对象的前后关系 258 隐藏面消除 260 示例程序(DepthBuffer.js) 262 深度冲突 263 立方体 266 通过顶点索引绘制物体 268 示例程序(HelloCube.js) 268 向缓冲区中写入顶点的坐标、颜色与索引 271 ...

    Java开发技术大全(500个源代码).

    listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的...

    webgl编程指南及源码1/2

    正确处理对象的前后关系 258 隐藏面消除 260 示例程序(DepthBuffer.js) 262 深度冲突 263 立方体 266 通过顶点索引绘制物体 268 示例程序(HelloCube.js) 268 向缓冲区中写入顶点的坐标、颜色与索引 271 ...

    webgl编程指南及源码2/2

    正确处理对象的前后关系 258 隐藏面消除 260 示例程序(DepthBuffer.js) 262 深度冲突 263 立方体 266 通过顶点索引绘制物体 268 示例程序(HelloCube.js) 268 向缓冲区中写入顶点的坐标、颜色与索引 271 ...

Global site tag (gtag.js) - Google Analytics