比如我现在要传过一条SQL语句去查询,一般情况下得到rs了,直接while(rs.next()){
ttt t = new ttt();//对象
t.setID() = rs.getInt(1);
t.setName = rs.getString(2);
...
all.add(t);
}
然后在循环这list all就行了,可现在这个ttt对象定不了,不知道查那个表呢,要定义一个动态的对象,怎么定义?
ttt t = new ttt();//对象
t.setID() = rs.getInt(1);
t.setName = rs.getString(2);
...
all.add(t);
}
然后在循环这list all就行了,可现在这个ttt对象定不了,不知道查那个表呢,要定义一个动态的对象,怎么定义?
List t = new ArrayList();//对象
t.add(rs.getInt(1));
t.add(rs.getString(2));
...
all.add(t);
} 不过说实话,不知道你想搞什么
用数组实现
while(rs.next()){
List t = new ArrayList();
t.add(rs.getInt(1));
t.add(rs.getString(2));
...
all.add(t);
}
List t = new ArrayList();
t.add(rs.getInt(1));
t.add(rs.getString(2));
...
all.add(t);
} 这里面的t.add(rs.getInt(1));
t.add(rs.getString(2));
...这些我不知道是几个,没准是几个呢,要看你传过来的sql语句要查几个字段呢,怎么写?
我说一下我的理解,你是想定义一个ttt对象,然后将从数据库中查出来的对象的属性值分别附值,将ttt添加到list集合中,在遍历list是把, 如果是这样的话 你可以定义一个java Bean对象,Ttt.java类,将数据库表的字段值作为这个类的属性值,添加getter和setter方法 就可以实现了
我就是想做一个ttt.java类,现在问题就是你还不知道从数据库查处的是什么字段名呢,所以你这个类的属性值页定不了,就更别提get set方法了
while(rs.next()){
List t = new ArrayList();
int count = rs.getFetchSize();
for(int i=1;i>=count;i++)
//因为你什么都不确定,你不能使用getInt,因为可能根本就不是int
t.add(rs.getString(i));
all.add(t);
}
如果你定义的DTO名跟物理表名有一定的关系,那就可以通过你检索的SQL语句中找出你要检索的表名,利用反射,可以生成这个表所对应的DTO实例,进行set。
你定义的ttt.java完全可以包含该对象或者说你的数据表中的所有属性及相应的方法,因为一般SQL语句在jsp中是固定的,即使要动态输入,也应该能提取它的属性名。
这是我的理解,希望大家指正
你实在要把关系型数据转换成对象型数据,而且是通用的话,自己实现没有那么简单,不过你可以采用现成的解决方案,
ibatis 或hibernate 。