자바 반사 메커니즘 의 일부 용법
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List;
import com.msi.model.Diary; import com.msi.model.User; import com.msi.util.DbUtil;
public class ClassDataDemo {
// f.getType().getConstructor(java.lang.String.class);
List list = new ArrayList();
Connection conn = new DbUtil().getCon();
PreparedStatement pstat = conn.prepareStatement(sql);
ResultSet rs = pstat.executeQuery();
while (rs.next()) {
Field[] fs = clazz.getDeclaredFields();
Object obj = clazz.newInstance();
for (Field f : fs) {
String setname = "set"
+ f.getName().substring(0, 1).toUpperCase()
+ f.getName().substring(1);
Method me = clazz.getMethod(setname, f.getType());
// Constructor c =
// f.getType().getConstructor(java.lang.String.class);
// Object valueobj = c.newInstance(rs.getString(f.getName()));
// me.invoke(obj, valueobj);
// me.invoke(obj, rs.getString(f.getName()));
Class rsclazz = ResultSet.class;
String rsmname = "get"
+ f.getType().getSimpleName().substring(0, 1)
.toUpperCase()
+ f.getType().getSimpleName().substring(1);
Method rsme = rsclazz.getMethod(rsmname, String.class);
System.out.println(setname + " rsmname=" + rsmname
+ " rsme.invoke " + rsme.invoke(rs, f.getName()));
me.invoke(obj, rsme.invoke(rs, f.getName()));
}
list.add(obj);
}
return list;
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// List<User> userList = new ClassDataDemo().getAll(User.class,
// "select * from t_user");
// for (User u : userList) {
// System.out.println(u);
// }
List<Diary> diaryList = new ClassDataDemo().getAll(Diary.class,
"select d.diaryId, d.title,d.content,d.typeId from t_diary as d");
for (Diary d : diaryList) {
System.out.println(d);
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.