將ActionForm拼合成一條插入和更新語句
package chs.jhsyss.form;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
public class Waper {
public Waper(){
}
/**
* 本方法用于將FORM對象組裝成一條INSERT語句
* @param obj ActionForm 以及其子對象
* @param formPath ActionForm 以及其子對象的包路徑和名稱
* @param tableName 所要操作的數(shù)據(jù)表
* @return 返回相應(yīng)的INSERT語句
*/
public String insert(Object obj,String formPath,String tableName){
long start = new Date().getTime();
String sqlToVar = "insert into "+tableName+"(";
String sqlToValues = " ) values(";
Class $fj = null;
try {
$fj = Class.forName(formPath);//example "chs.jhsyss.form.FJhsyss"
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Class clazz = obj.getClass();
Method[] method = clazz.getDeclaredMethods();
for(int i=0;i<method.length;i++){
String methodName = method[i].getName();
if(methodName.indexOf("get")<0){
continue;// 除去非get方法
}else{
try {
Method m = $fj.getMethod(methodName, null);//根據(jù)指定的方法名取得相應(yīng)方法
String $methodName = methodName.toLowerCase().substring(3,methodName.length());//裁剪getXXX方
法取得相應(yīng)變量名稱
try {
String result = (String) m.invoke(obj, null);//調(diào)用方法,前一個(gè)參數(shù)代表傳進(jìn)來的FORM對
象,后一個(gè)為傳遞給方法的參數(shù);返回結(jié)果為原來方法相應(yīng)的返回值
sqlToVar+=$methodName+",";
sqlToValues+="'"+result+"',";
} 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();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
sqlToVar=sqlToVar.substring(0,sqlToVar.length()-1);
sqlToValues=sqlToValues.substring(0,sqlToValues.length()-1)+")";
long end = new Date().getTime();
System.out.println("插入操作花費(fèi)總時(shí)間->"+(end-start)+"<-ms");
System.out.println(sqlToVar+sqlToValues);
return sqlToVar+sqlToValues;
}
public String update(Object obj,String formPath,String xh,String tableName){
long start = new Date().getTime();
String sqlToVar = "update "+tableName+" set ";
Class $clazz = null;
try{
$clazz = Class.forName(formPath);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
Class clazz = obj.getClass();
Method[] method = clazz.getDeclaredMethods();
for(int i = 0;i<method.length;i++){
String methodName = method[i].getName();
if(methodName.indexOf("get")<0){
continue;// 除去非get方法
}else{
try {
Method m = $clazz.getMethod(methodName, null);
String $methodName = methodName.toLowerCase().substring(3,methodName.length());//裁剪
getXXX方法取得相應(yīng)變量名稱
String result = (String) m.invoke(obj, null);
sqlToVar+=$methodName+"='"+result+"',";
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//根據(jù)指定的方法名取得相應(yīng)方法
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();
}
}
}
sqlToVar=sqlToVar.substring(0,sqlToVar.length()-1)+" where xh="+xh;
long end = new Date().getTime();
System.out.println("更性操作花費(fèi)總時(shí)間->"+(end-start)+"<-ms");
System.out.println("SQL->"+sqlToVar);
return sqlToVar;
}
public static void main(String[] args){
FJhsyss fj = new FJhsyss();
fj.setBcrq("20050202");
fj.setDwfzr("fafa");
fj.setGnjygr("fafa");
fj.setGnjyls("2000");
fj.setXh("seq_hqjc_jhsyss,");
String seq = "seq_hqjc_jhsyss.nextval";
String path = "chs.jhsyss.form.FJhsyss";
Waper r = new Waper();
r.insert(fj,path,"MYTABLE");
r.update(fj, path, "1", "mytable");
}
}