`
xiegangthrille
  • 浏览: 93643 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java反射利用赋值、取值操作

    博客分类:
  • java
阅读更多
@SuppressWarnings("unchecked")
//数据插入操作
	public boolean insertData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			sql.append("insert into ");
			sql.append(tableName+"(");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				ArrayList listChild=new ArrayList();
				String fieldName=fieldArray[i].getName();
				sql.append(fieldName+",");
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				
				listChild.add(i+1);
				listChild.add(fieldName);
				listChild.add(meth.invoke(obj));
				listChild.add(meth.getReturnType().getSimpleName());
				list.add(listChild);
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(") values(");
			for(int i=0;i<fieldArray.length;i++){
				sql.append("?,");
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(")");
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
		}
		return result;
	}
@SuppressWarnings("unchecked")
//数据更新操作
	public boolean updateData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("update ");
			sql.append(tableName);
			sql.append(" set ");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				ArrayList listChild=new ArrayList();
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=meth.invoke(obj);
						fieldIDType=meth.getReturnType().getSimpleName();
					}else{
						sql.append(fieldName+"=?,");
						listChild.add(list.size()+1);
						listChild.add(fieldName);
						listChild.add(meth.invoke(obj));
						listChild.add(meth.getReturnType().getSimpleName());
						list.add(listChild);
					}
				}
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
			
		}
		return result;
	}

 

@SuppressWarnings("unchecked")
//数据删除操作
	public boolean deleteData(Object obj) throws Exception {
		boolean result=false;
		if(obj!=null){
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("delete ");
			sql.append(tableName);
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=meth.invoke(obj);
						fieldIDType=meth.getReturnType().getSimpleName();
					}
				}
			}
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			int resultNum=connection.executeUpdate(sql.toString(), list);
			if(resultNum>0){
				result=true;
			}
		}
		return result;
	}

 

@SuppressWarnings("unchecked")
//根据ID取某个实例数据,并返回ArrayList
	public ArrayList<Object> getDataById(Object obj, Object Id) throws Exception {
		ArrayList list_obj=null;
		if(obj!=null){
			list_obj=new ArrayList<Object>();
			Class cla=obj.getClass();
			String tableName=cla.getSimpleName();
			StringBuffer sql=new StringBuffer();
			ArrayList list=new ArrayList();
			ArrayList listByID=new ArrayList();
			String fieldID="";
			Object fieldIDvalue="";
			String fieldIDType="";
			sql.append("select ");
			Field[] fieldArray=cla.getDeclaredFields();
			for(int i=0;i<fieldArray.length;i++){
				String fieldName=fieldArray[i].getName();
				String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
				Method meth=cla.getDeclaredMethod("get"+newfieldName);
				if(meth.invoke(obj)!=null){
					if(fieldName.lastIndexOf("ID")!=-1){
						fieldID=fieldName;
						fieldIDvalue=Id;
						fieldIDType=meth.getReturnType().getSimpleName();
					}
				}
				sql.append(fieldName+",");
				
			}
			sql.deleteCharAt(sql.lastIndexOf(","));
			sql.append(" from ");
			sql.append(tableName);
			sql.append(" where "+fieldID+"=?");
			listByID.add(list.size()+1);
			listByID.add(fieldID);
			listByID.add(fieldIDvalue);
			listByID.add(fieldIDType);
			list.add(listByID);
			System.out.println(sql.toString());
			ResultSet rs=connection.executeQuery(sql.toString(), listByID);
			Object obj_n=null;
			while(rs.next()){
				   obj_n=obj.getClass().newInstance();
				   Class obj_n_cla=obj_n.getClass();
				   Field[] obj_n_cla_array=obj_n_cla.getDeclaredFields();
				   for(int i=0;i<obj_n_cla_array.length;i++){
						String fieldName=obj_n_cla_array[i].getName();
						String newfieldName=fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
						Method meth=obj_n_cla.getDeclaredMethod("set"+newfieldName,obj_n_cla_array[i].getType());
						if(meth!=null){
							meth.invoke(obj_n, new Object[]{rs.getObject(fieldName)});
						}
				   }
				   list_obj.add(obj_n);
			}
		}
		return list_obj;
	}

 

分享到:
评论

相关推荐

    java反射对实体类取值和赋值

    项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个磨砺营的java反射讲解,非常受益。于是,哈哈哈  public static &lt;T&gt; void modelTrim(T model){  Class&lt;T&gt; ...

    java反射遍历实体类属性和类型,并赋值和获取值的简单方法

    这里我们将深入探讨如何使用Java反射遍历实体类的属性和类型,并进行赋值和获取值的操作。 首先,我们需要理解Java反射的基本概念。`java.lang.reflect`包提供了几个核心类和接口,如`Class`、`Field`、`Method`和`...

    通过枚举反向给实体类赋值

    在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组固定的常量。它在许多场景下比使用字符串或整数常量更安全、更易于管理。然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在...

    Java反射工具类

    提供以下几个功能: 1. 取最简类名 2. 动态赋值 3. 动态取值 4. 判断是否普通类型(自定义成员变量) 5. 动态取指定类的所有属性名

    《Java编程基础》代码

    17. **反射机制**:Java反射API允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作,增强了程序的灵活性。 18. **注解(Annotation)**:注解是Java提供的一种元数据,可以向编译器、JVM或其他...

    java八股文共10章八股文.rar

    Java八股文是Java开发者在面试中经常遇到的经典问题集合,涵盖了从基础语法到高级特性的各个层面。这些“八股文”旨在测试和提升候选人在Java编程语言上的理解和应用能力。以下是对Java八股文各章节可能涉及的知识点...

    java由浅到深必了解的题

    理解它们的存储方式、取值范围以及相互转换是学习Java的第一步。 - **变量**:变量是存储数据的容器,包括声明、初始化和赋值等操作。 - **运算符**:了解算术、比较、逻辑、位、赋值等各类运算符的使用规则。 - ...

    java基础文档

    14. **反射**:Java反射机制允许我们在运行时动态地获取类的信息并操作类的对象,是很多框架和高级功能的基础。 15. **注解**:注解提供了一种元数据,可以用于编译时或运行时的代码处理,例如Spring框架中的@...

    java基础java基础学习java基础学习

    5. **运算符**:Java支持算术、比较、逻辑、位、赋值等多种运算符,理解这些运算符的优先级和用法对于编写逻辑复杂的程序至关重要。 6. **控制流程**:包括条件语句(if, if-else, switch)和循环语句(for, while,...

    java基础ppt

    反射允许程序在运行时动态获取类的信息并操作类的对象,如创建对象、调用方法、访问字段等。 11. **网络编程**: Java的java.net包提供了Socket和ServerSocket类进行TCP/IP通信,URL和URLConnection类处理HTTP...

    java基础大纲xls格式

    11. **反射**:学习如何在运行时动态获取类的信息并操作类的对象。 12. **注解**:了解注解的定义、使用和元注解,以及自定义注解的实现。 13. **枚举与内部类**:学习枚举类型及其使用,理解内部类(静态内部类、...

    java中文手册全部中文解释

    - **操作符与表达式**:包括算术、比较、逻辑、赋值等操作符,它们用于组合变量和常量,形成表达式,进行计算或判断。 - **控制结构**:包括条件语句(if-else)、循环(for、while、do-while)、跳转语句(break...

    JAVA语言程序设计 第一章概述

    **JAVA语言程序设计 第一章概述** 在编程领域,Java是一种广泛应用的面向对象的编程语言,由Sun ...随着学习的深入,还将接触到反射、注解、泛型、并发高级特性和框架等内容,这些都是Java程序员必须掌握的知识。

    Java编程基础,Java初学者采用

    5. **运算符**:Java支持算术、关系、逻辑、位和赋值等运算符。理解它们的优先级和作用是编写正确代码的基础。 6. **控制流**:包括条件语句(if-else, switch-case)、循环(for, while, do-while)和跳转语句...

    Head First Java 中文高清版

    - **运算符**:Java支持算术、比较、逻辑、位和赋值等运算符,理解它们的用法是编程的基础。 - **控制流程**:包括条件语句(if-else, switch)和循环语句(for, while, do-while),用于根据条件执行不同的代码块...

    Java语言程序设计学习笔记

    5. **运算符和表达式**:熟悉算术、关系、逻辑、位、赋值等运算符,以及它们在表达式中的应用。 6. **控制流程**:学习if条件语句、switch选择结构、for、while、do-while循环,以及break和continue语句。 7. **...

    java 初级学习基础知识

    15. **反射机制**:反射允许在运行时动态地获取类的信息,并操作类的对象,提供了强大的动态编程能力。 16. **泛型**:泛型是Java 5引入的新特性,用于提高代码的类型安全性和重用性。 17. **注解(Annotation)**...

    JAVA复习提纲(用于Java复习考试)

    Java是一种广泛使用的面向对象的编程语言...深入学习还包括异常处理、集合框架、IO流、多线程、网络编程、反射、注解以及Java高级特性,如Lambda表达式和Stream API等。继续深入研究,将有助于成为更专业的Java开发者。

    Java源代码编程的基础知识

    以上只是Java源代码编程基础知识的一部分,实际学习过程中,还会涉及到接口、枚举、反射、JNI等更深入的话题。Java教程,如`javanotes5.1.1`,通常会逐步引导你理解和掌握这些概念,从而成为熟练的Java开发者。

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

    - 反射手段创建类对象:Java反射机制允许程序在运行时访问和操作类、方法、接口等。 - Invoke方法:在Java中,可以通过反射的invoke方法调用方法。 - 动态代理原理:动态代理是运行时动态生成代理类,用来代替目标...

Global site tag (gtag.js) - Google Analytics