예제 코드:
public 클래스 SqlUtil은 BaseApplogic을 확장합니다. {
public List excuteQuery(String sql, Object[] paras, Object voo)
AppException을 발생시킵니다. {
DBPersistenceManager dbpm = this.getFnmsDBPM();
List list=new ArrayList();
시도해 보세요 {
DataSet ds = (DataSet) dbpm.executeQuery(sql, paras);
DataSetMetaData dsmd = ds.getDataSetMetaData();
Field[] voo.getClass().getDe claredFields();
String className = voo.getClass ().getName();
int size = fd.length;
메서드 md[]=new Method[size];
//构造method[]
for (int i = 0; i < size; i++) {
속성 attr=dsmd.getAttribute(fd[i].getName().toUpperCase());
if (null != attr) {
Field f = voo.getClass().getDeclaredFi 필드(fd[i].getName( ));
문자열 유형 = f.getType().getName();
Class[] 유형=getTypes(type); and s);
}
}
while(ds.next()) {
Object o = Class.forName(className).newInstance();
for (int i = 0; i < size; i++) {
if(null!=md[i]){
//调用
속성 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( 예외 e) {
this.handleException(e);// 新增加的异常处理
} 마지막으로 {
if (dbpm != null) {
dbpm.close();
}
}
반품 목록;
}
//由属性调用set방법
public static String getSetterName(String propName) {
return "set" + propName.substring(0, 1).toUpperCase()
+ propName.substring(1, propName.length() );
}
// 取类型
public static Class[] getTypes(문자열 유형) {
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")) {
새 클래스 반환[] { 긴.TYPE };
} Else if (type.equals ("float") {
Return New class [] {float.type};
} else {
system.out.println ("해당 유형이 없습니다!");
Return null; Bleak }
}
}
위 내용은 Java 반사 기술을 사용하여 객체 지향 프로그래밍과 SQL 작업을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!