最近开发一项目,是用的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();本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!