Beispielcode:
public class SqlUtil erweitert BaseApplogic {
public List excuteQuery(String sql, Object[] paras, Object voo)
throws AppException {
DBPersistenceManager dbpm = this.getFnmsDBPM();
List list=new ArrayList();
probieren Sie {
DataSet ds = (DataSet) dbpm.executeQuery(sql, paras);
DataSetMetaData dsmd = ds.getDataSetMetaData();
Field[] fd =. voo.getClass().get DeclaredFields();
String className = voo.getClass ().getName();
int size = fd.length;
Method md[]=new Method[size];
//构造method[]
for (int i = 0; i < size; i++) {
Attribute attr=dsmd.getAttribute(fd[i].getName().toUpperCase());
if (null != attr) {
Field f = voo.getClass().getDeclaredField( fd[i].getName( ));
String type = f.getType().getName();
Class[]types=getTypes(type);
String methodName=getSetterName(fd[i].getName());
md[i] = voo.getClass().getMethod(
methodName,types);
}
}
while(ds.next()) {
Object o = Class.forName(className).newInstance();
for (int i = 0; i < size; i++) {
if(null!=md[i]){
//调用
Attribut attr=dsmd.getAttribute(fd[i].getName().toUpperCase());
if (null==attr) continue;
Object[] pa=new Object[]{ds.getString(attr.getAttrName()) )};
md[i].invoke(o,pa);
}
list.add(o);
}
} Catch (DrmException drme) {
this.handleException(drme);
} Catch ( Ausnahme e) {
this.handleException(e);// 新增加的异常处理
} schließlich {
if (dbpm != null) {
dbpm.close();
}
}
Rückgabeliste;
}
//由属性调用set方法
public static String getSetterName(String propName) {
return "set" + propName.substring(0, 1).toUpperCase()
+ propName.substring(1, propName.length () );
}
// 取类型
public static Class[] getTypes(String type) {
if (type.equals("java.lang.String")) {
return new Class[] { String.class };
} else if (type.equals("int")) {
return new Class[] { Integer.TYPE };
} else if (type.equals("long")) {
return new Class[] { Long.TYPE };
} Else if (type.equals ("float") {
Return New class [] {float.type};
} else {
system.out.println ("no such type!");
Return null; Bleak }
}
}
Das obige ist der detaillierte Inhalt vonWie kann die Java-Reflexionstechnologie verwendet werden, um objektorientierte Programmierung und SQL-Operationen zu verbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!