@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;
}
分享到:
相关推荐
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个磨砺营的java反射讲解,非常受益。于是,哈哈哈 public static <T> void modelTrim(T model){ Class<T> ...
这里我们将深入探讨如何使用Java反射遍历实体类的属性和类型,并进行赋值和获取值的操作。 首先,我们需要理解Java反射的基本概念。`java.lang.reflect`包提供了几个核心类和接口,如`Class`、`Field`、`Method`和`...
在Java编程中,枚举类型(Enum)是一种强大的工具,用于定义一组固定的常量。它在许多场景下比使用字符串或整数常量更安全、更易于管理。然而,在实际开发中,我们经常需要将枚举值反向映射到实体类的属性上,以便在...
提供以下几个功能: 1. 取最简类名 2. 动态赋值 3. 动态取值 4. 判断是否普通类型(自定义成员变量) 5. 动态取指定类的所有属性名
17. **反射机制**:Java反射API允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作,增强了程序的灵活性。 18. **注解(Annotation)**:注解是Java提供的一种元数据,可以向编译器、JVM或其他...
Java八股文是Java开发者在面试中经常遇到的经典问题集合,涵盖了从基础语法到高级特性的各个层面。这些“八股文”旨在测试和提升候选人在Java编程语言上的理解和应用能力。以下是对Java八股文各章节可能涉及的知识点...
理解它们的存储方式、取值范围以及相互转换是学习Java的第一步。 - **变量**:变量是存储数据的容器,包括声明、初始化和赋值等操作。 - **运算符**:了解算术、比较、逻辑、位、赋值等各类运算符的使用规则。 - ...
14. **反射**:Java反射机制允许我们在运行时动态地获取类的信息并操作类的对象,是很多框架和高级功能的基础。 15. **注解**:注解提供了一种元数据,可以用于编译时或运行时的代码处理,例如Spring框架中的@...
5. **运算符**:Java支持算术、比较、逻辑、位、赋值等多种运算符,理解这些运算符的优先级和用法对于编写逻辑复杂的程序至关重要。 6. **控制流程**:包括条件语句(if, if-else, switch)和循环语句(for, while,...
反射允许程序在运行时动态获取类的信息并操作类的对象,如创建对象、调用方法、访问字段等。 11. **网络编程**: Java的java.net包提供了Socket和ServerSocket类进行TCP/IP通信,URL和URLConnection类处理HTTP...
11. **反射**:学习如何在运行时动态获取类的信息并操作类的对象。 12. **注解**:了解注解的定义、使用和元注解,以及自定义注解的实现。 13. **枚举与内部类**:学习枚举类型及其使用,理解内部类(静态内部类、...
- **操作符与表达式**:包括算术、比较、逻辑、赋值等操作符,它们用于组合变量和常量,形成表达式,进行计算或判断。 - **控制结构**:包括条件语句(if-else)、循环(for、while、do-while)、跳转语句(break...
**JAVA语言程序设计 第一章概述** 在编程领域,Java是一种广泛应用的面向对象的编程语言,由Sun ...随着学习的深入,还将接触到反射、注解、泛型、并发高级特性和框架等内容,这些都是Java程序员必须掌握的知识。
5. **运算符**:Java支持算术、关系、逻辑、位和赋值等运算符。理解它们的优先级和作用是编写正确代码的基础。 6. **控制流**:包括条件语句(if-else, switch-case)、循环(for, while, do-while)和跳转语句...
- **运算符**:Java支持算术、比较、逻辑、位和赋值等运算符,理解它们的用法是编程的基础。 - **控制流程**:包括条件语句(if-else, switch)和循环语句(for, while, do-while),用于根据条件执行不同的代码块...
5. **运算符和表达式**:熟悉算术、关系、逻辑、位、赋值等运算符,以及它们在表达式中的应用。 6. **控制流程**:学习if条件语句、switch选择结构、for、while、do-while循环,以及break和continue语句。 7. **...
15. **反射机制**:反射允许在运行时动态地获取类的信息,并操作类的对象,提供了强大的动态编程能力。 16. **泛型**:泛型是Java 5引入的新特性,用于提高代码的类型安全性和重用性。 17. **注解(Annotation)**...
Java是一种广泛使用的面向对象的编程语言...深入学习还包括异常处理、集合框架、IO流、多线程、网络编程、反射、注解以及Java高级特性,如Lambda表达式和Stream API等。继续深入研究,将有助于成为更专业的Java开发者。
以上只是Java源代码编程基础知识的一部分,实际学习过程中,还会涉及到接口、枚举、反射、JNI等更深入的话题。Java教程,如`javanotes5.1.1`,通常会逐步引导你理解和掌握这些概念,从而成为熟练的Java开发者。
- 反射手段创建类对象:Java反射机制允许程序在运行时访问和操作类、方法、接口等。 - Invoke方法:在Java中,可以通过反射的invoke方法调用方法。 - 动态代理原理:动态代理是运行时动态生成代理类,用来代替目标...