我的后台有两张表是一对多的 也就是一个是汇总的一个是明细的。
我以前用hibernate做的在java类里写两个bean一个里面通过集合引用另外一个,
但现在用JDBC不知道怎么做。比如在做查询的时候
[b]问题补充:[/b]
[quote]一个SQL,直接关联两张表; 不就可以了?[/quote]
不行啊这样会有重复的部分啊?
class:
public class A{
String ID
String name
String age
String sex
List B
}
public class B{
String telphone;
String area;
String Date;
}
例如:
关联出来的数据是
ID 姓名 年龄 性别 电话 地址 时间
A1 李四 23 男 67676767 北京西路78号 20080808
A1 李四 23 男 70987655 天津南路8号 20090115
前面的汇总的那部分不是重复了吗。
[b]问题补充:[/b]
由于服务器是weblgic8.0所有jdk只能用1.4的 不知道1.4支持不支持rowset
[b]问题补充:[/b]
[quote]然后根据,RowSet组合对象,不就可以了?[/quote]
能不能给个小demo 我没用过这个东西,
才疏学浅 指点一二。
[b]问题补充:[/b]
好像1.4 不支持啊
CachedRowSet crs = new CachedRowSetImpl();
我用这个它报错。
[b]问题补充:[/b]
[quote]Java代码
Connection myConn;
//获取连接
Statement mystmt=myConn.createStatement();
//建立结果集
String sql = "select t1.id t2.telephone,t2.area from tableA t1, tableB t2 where t1.id=t2.id";
ResultSet myrs=mystmt.executeQuery(sql);
A a = new A();
List bList = new ArrayList();
while(myrs.next()){
B b = new B();
a.setId(myrs.getString("id"));
b.setTel(myrs.getString("telephone"));
b.setArea(myrs.getString("area"));
bList.add(b);
}
Connection myConn;
//获取连接
Statement mystmt=myConn.createStatement();
//建立结果集
String sql = "select t1.id t2.telephone,t2.area from tableA t1, tableB t2 where t1.id=t2.id";
ResultSet myrs=mystmt.executeQuery(sql);
A a = new A();
List bList = new ArrayList();
while(myrs.next()){
B b = new B();
a.setId(myrs.getString("id"));
b.setTel(myrs.getString("telephone"));
b.setArea(myrs.getString("area"));
bList.add(b);
}
Google上也很多;上面的你参考下;[/quote]
这样写行吗!这不正是我想要解决的问题吗
[b]问题补充:[/b]
[quote] ID 姓名 年龄 性别 电话 地址 时间
A1 李四 23 男 67676767 北京西路78号 20080808
A1 李四 23 男 70987655 天津南路8号 20090115
A2 张三 28 女 9878762 天津南路80号 20080909
A2 张三 28 女 9878762 上海南路80号 20080920
[/quote]
如果数据是这样呢?
[b]问题补充:[/b]
[quote]Map aMap = new HashMap();
List bList = new ArrayList();
while(myrs.next()){
B b = new B();
String userid = myrs.getString("id");
if(aMap.get(userid)==null){
A a = new A();
a.setId(myrs.getString("id"));
aMap.put(userid,a);
}
A a = (A)aMap.get(userid);
b.setTel(myrs.getString("telephone"));
b.setArea(myrs.getString("area"));
a.bList.add(b);
aMap.put(userid,a);
} [/quote]
hibernate也是通过这种方式来做的吗。