-----------反射操作封装--------------
package fozzz;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
/***
* in:对象实例
* out:对象变量个数,对象get方法值,对象变量,对象名
* @author fozzz
*
*/
public class MyReflect {
private Class<? extends Object> myClass;
private Object object;
private int length;
private Object[] resultArray;
private String[] memberArray;
private String className;
/**
*
* @param object
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws InvocationTargetException
* @throws NoSuchMethodException
* @throws SecurityException
*/
public MyReflect(Object object) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException,
NoSuchMethodException, SecurityException {
this.myClass = object.getClass();
this.object = object;
Field[] declaredFields = myClass.getDeclaredFields();
this.length = declaredFields.length;
this.memberArray = new String[length];
this.resultArray = new Object[length];
for (int i = 0; i < length; i++) {
String name = declaredFields[i].getName();
memberArray[i] = name;
resultArray[i] = myClass.getMethod("get" + (char) (name.charAt(0) - 32) + name.substring(1)).invoke(object);
}
String[] split = myClass.getName().split("\\.");
this.className = split[split.length - 1];
}
/**
*
* @return 对象变量个数
*/
public int getLength() {
return length;
}
/**
*
* @return 对象get方法值
*/
public Object[] getResultArray() {
return resultArray;
}
/**
*
* @return 对象名
*/
public String getClassName() {
return className;
}
/**
*
* @return 对象变量
*/
public String[] getMemberArray() {
return memberArray;
}
}
----------通过上面的类,得到拼装的sql-----------
package fozzz;
import java.lang.reflect.InvocationTargetException;
public class MyDel {
private String className;
private String[] memberArray;
private Object[] resultArray;
public Object[] getResultArray() {
return resultArray;
}
public MyDel(Object object) {
try {
MyReflect myReflect = new MyReflect(object);
this.className = myReflect.getClassName();
this.memberArray = myReflect.getMemberArray();
this.resultArray = myReflect.getResultArray();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
public String getSql() {
String sql = "delete from " + className + " where " + memberArray[0] + "=?";
return sql;
}
}
-----------连接数据库部分-------------
package fozzz;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Del {
private boolean ok = false;
public Del(Object object) {
MyDel myDel = new MyDel(object);
Connection connection = new MyConnection().getConnection();
String sql = myDel.getSql();
Object[] resultArray = myDel.getResultArray();
try {
PreparedStatement prepareStatement = connection.prepareStatement(sql);
prepareStatement.setObject(1, resultArray[0]);
int executeUpdate = prepareStatement.executeUpdate();
if (executeUpdate > 0) {
ok = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public boolean isOk() {
return ok;
}
}