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条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器