Maison >Java >javaDidacticiel >Comment utiliser la technologie de réflexion Java pour connecter la programmation orientée objet et les opérations SQL ?
Exemple de code :
public class SqlUtil extends BaseApplogic {
public List excuteQuery(String sql, Object[] paras, Object voo)
lance AppException {
DBPersistenceManager dbpm = this.getFnmsDBPM();
List list=new ArrayList();
essayez {
DataSet ds = (DataSet) dbpm.executeQuery(sql, paras);
DataSetMetaData dsmd = ds.getDataSetMetaData();
Field[] fd = voo.getClass().getDeclaredFi elds();
String className = voo.getClass ().getName();
int size = fd.length;
Méthode md[]=new Method[size];
//构造method[]
for (int i = 0; i < size; i++) {
Attribut attr=dsmd.getAttribute(fd[i].getName().toUpperCase());
if (null != attr) {
Champ f = voo.getClass().getDeclaredField(f d[i].getName( ));
String type = f.getType().getName();
Class[] types=getTypes(type);
String methodName=getSetterName(fd[i].getName());
md[i] = voo.getClass().getMethod(
methodName,types);
}
}
pendant que(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) continuer;
Object[] pa=new Object[]{ds.getString(attr.getAttrName()) )};
md[i].invoke(o,pa);
}
list.add(o);
}
} catch (DrmException drme) {
this.handleException(drme);
} catch ( Exception e) {
this.handleException(e);// 新增加的异常处理
if (dbpm != null) {
dbpm.close();
}
}
liste de retour ;
} // () );
}
// 取类型
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 ("pas de type de ce type!");
Return null; Bleak }
}
}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!