dongni110 2009-01-12 00:38
浏览 157
已采纳

关于list

最近开发一项目,是用的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();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!