数据库查询出记录封装到对象中 从一个数据库中查出5条数据,我想把这五条数据的每一条作为一个结果集封装到emp对象中,然后把对象封装到list中,代码怎么写,急用,在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 五条数据贴出来emp那个类也贴出来 使用每一行的字段创建一个emp,加到list。 数据:id name age1 a 112 b 113 c 114 d 11我想要的是把这四条数据每一条作为一个对象(每一个对象封装了id,name,age),然后对象放入到一个list中 List list = new List();Emp e = new Emp();e.setId(1);e.setName(a);e.setAge(11);list.add(e);当然set进去的值需要你自已从数据库里拉出来。 while(rs.next()){ list.add(new Emp(rs.getInt("id"),rs.getString("name"),rs.getInt("age"));} 给你我写过的一个类参考。利用了java泛型和反射,使用前须创建好与该数据库表相应的pojo类,该javabean中的每个字段和你数据库中表的字段名字相同。直接继承该类即可,方法返回一个封装了该pojo的list集合public class Query<T> { private DBUtil db = DBUtil.getInstance(); private List<T> list = null; private int totleCount = -1; private Class<T> entityClass; private String sql = null; @SuppressWarnings("unchecked") public Query(String sql) { this.entityClass = (Class<T>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; this.sql = sql; this.list = excute(sql); } public int getCount() { return totleCount; } public List<T> getGridData(int start, int size) { if (start + size > totleCount) { size = totleCount - start; } return list.subList(start, start + size); } public List<T> getQueryData() { return list; } public List<T> excute(String sql) { ArrayList<T> list = null; Statement stm = db.getStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rst = null; try { rst = stm.executeQuery(sql); rst.last(); totleCount = rst.getRow(); rst.beforeFirst(); list = new ArrayList<T>(totleCount); while (rst.next()) { ResultSetMetaData metaData = rst.getMetaData(); T t = entityClass.newInstance(); for (int j = 1; j <= metaData.getColumnCount(); j++) { String name = metaData.getColumnName(j); try { Field field = entityClass.getDeclaredField(name .substring(0, 1).toLowerCase() + name.substring(1)); Method method = entityClass.getMethod("set" + name.substring(0, 1).toUpperCase() + name.substring(1), field.getType()); String type = field.toGenericString(); if (type.contains("java.lang.String")) { method.invoke(t, rst.getString(name)); } else if (type.contains("java.lang.Integer")) { method.invoke(t, rst.getInt(name)); } else if (type.contains("java.lang.Double")) { method.invoke(t, rst.getDouble(name)); } else if (type.contains("java.sql.Date")) { method.invoke(t, rst.getDate(name)); } else if (type.contains("java.sql.Timestamp")) { method.invoke(t, rst.getTimestamp(name)); } } catch (NoSuchFieldException e) { /* * System.out.println("找不到字段" + name.substring(0, * 1).toLowerCase() + name.substring(1) + ",将忽略处理。"); */ } } list.add(t); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { db.freeResource(stm, rst); } return list; } } public class TestPeroson extends ArrayList<Person> { public static ArrayList<Person> persons = new ArrayList<Person>(); public static void main(String args[]) { init(); display(); } public static void init(){ persons.add(new Person(1, "a", 11)); persons.add(new Person(2, "b", 11)); persons.add(new Person(3, "c", 11)); persons.add(new Person(4, "d", 11)); } public static void display(){ for(Person person:persons){ System.out.println(person.id + " " + person.name + " " + person.age); } } }class Person{ int id ;String name; int age; public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; }}/*1 a 112 b 113 c 114 d 11*/ 坦克大战为什么药两个repaint java虚拟机将方法体中被解释器转换后的一条条指令存放在什么地方啊 有没有windows界面SWING外观啊?是不是开源的啊? Java读文件程序 这是我写的程序,编译时出现以下错误,请大家帮忙解决,我在线等待...谢谢 线程问题.请各位高手帮忙啊~~~~~~~ 包访问?? 如何屏蔽JTextField对backspace键的反应 如何正则表达式从<1></1><2>kkk</2>中将<1></1>间的空字符提取出来(使用jregex)? JAVA import 导入问题 语法问题~ 一道java题,为什么答案这样诡异
emp那个类也贴出来
id name age
1 a 11
2 b 11
3 c 11
4 d 11我想要的是把这四条数据每一条作为一个对象(每一个对象封装了id,name,age),然后对象放入到一个list中
Emp e = new Emp();
e.setId(1);
e.setName(a);
e.setAge(11);
list.add(e);当然set进去的值需要你自已从数据库里拉出来。
list.add(new Emp(rs.getInt("id"),rs.getString("name"),rs.getInt("age"));
}
public Query(String sql) { this.entityClass = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
this.sql = sql;
this.list = excute(sql);
}
public int getCount() { return totleCount;
} public List<T> getGridData(int start, int size) { if (start + size > totleCount) {
size = totleCount - start;
}
return list.subList(start, start + size); } public List<T> getQueryData() { return list;
} public List<T> excute(String sql) { ArrayList<T> list = null;
Statement stm = db.getStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rst = null;
try {
rst = stm.executeQuery(sql);
rst.last();
totleCount = rst.getRow();
rst.beforeFirst();
list = new ArrayList<T>(totleCount);
while (rst.next()) {
ResultSetMetaData metaData = rst.getMetaData();
T t = entityClass.newInstance();
for (int j = 1; j <= metaData.getColumnCount(); j++) {
String name = metaData.getColumnName(j);
try {
Field field = entityClass.getDeclaredField(name
.substring(0, 1).toLowerCase()
+ name.substring(1));
Method method = entityClass.getMethod("set"
+ name.substring(0, 1).toUpperCase()
+ name.substring(1), field.getType());
String type = field.toGenericString();
if (type.contains("java.lang.String")) {
method.invoke(t, rst.getString(name));
} else if (type.contains("java.lang.Integer")) {
method.invoke(t, rst.getInt(name));
} else if (type.contains("java.lang.Double")) {
method.invoke(t, rst.getDouble(name));
} else if (type.contains("java.sql.Date")) {
method.invoke(t, rst.getDate(name)); } else if (type.contains("java.sql.Timestamp")) {
method.invoke(t, rst.getTimestamp(name));
}
} catch (NoSuchFieldException e) {
/*
* System.out.println("找不到字段" + name.substring(0,
* 1).toLowerCase() + name.substring(1) + ",将忽略处理。");
*/
} }
list.add(t);
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
db.freeResource(stm, rst);
}
return list;
} }
public class TestPeroson extends ArrayList<Person> {
public static ArrayList<Person> persons = new ArrayList<Person>();
public static void main(String args[]) {
init();
display();
}
public static void init(){
persons.add(new Person(1, "a", 11));
persons.add(new Person(2, "b", 11));
persons.add(new Person(3, "c", 11));
persons.add(new Person(4, "d", 11));
}
public static void display(){
for(Person person:persons){
System.out.println(person.id + " " + person.name + " " + person.age);
}
}
}class Person{
int id ;String name; int age;
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}
/*
1 a 11
2 b 11
3 c 11
4 d 11*/