最近开发一项目,是用的struts做的web层,有一个从数据库A读取的list到jsp页面显示,但是需要显示的某一些值,需要数据库B中对应数据库A条件的其他数据。也可以这样类似的理解,数据库A为大类,在显示的时候需要显示它的小类在数据库B中的个数。这个问题用sql语句是比较好解决的,但是能不能通过修改list来解决,即先逐条取出list的值,后判断数据库B中的数据个数,后将这个数据加入list后到jsp页面显示。可能这样有点复杂,但是这个纯属个人想法,希望大家能提宝贵意见,谢谢!
6条回答 默认 最新
- Candyut 2009-01-12 01:17关注
你是想这样:
A1(2)
A2(12)
A3(24)
A4(7)那么。最面向对象的方式自然是:
假设你的类名为:A
A a = .....;
a.subs().size();
但是你这个时候又不需要B的数据。
那么可以改为
a.subSize();类似这种。你可以先测试一下。
那么可能你的subSize()方法里做的就是用SQL的count查询数据了。
那么也就是,你现在的代码不用怎么改:
class A{
public int subSize(){
//your query code
}
}如果发现多次查询影响了速度。那么考虑性能优化:
这个地方主要是SQL优化。。。
你装了MYSQL的话可以尝试下这个语句:
SELECT c.help_category_id,c.name,(select count(t.help_topic_id) from mysql.help_topic t where t.help_category_id=c.help_category_id) category_cout FROM mysql.help_category c;
以上语句在MYSQL 5.0测试通过。那么这样的话。就是你查询A的时候用上述类似语句去替换你的。这里我说明一下:
mysql.help_category:分类
mysql.help_topic:具体的文章这个跟你的需求很类似。
一个分类下有多篇文章。对吧?
那么你如果选上面的SQL优化方案。大概你的代码是这样:public List queryA(){
List ret = new ArrayList();
sql = "...这里我就不写了,照上面的改..";
ResultSet rs = DB.query(sql);
for(R r : rs){
A a = new A();
//....你的set语句
a.setSubSize(r.get("category_count"));
ret.add(a);
}
return ret;
}页面上用:
a.getSubSize();本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器