花公子丶 2015-06-03 04:35 采纳率: 50%
浏览 3809
已结题

怎么判断当前取出的数据是数据库相应的表中的最后一条

是这样的,我有一个jsp界面,

 setInterval(function (){
     $.post(url,data,function()
     {
            do something
     });
 },2000);

这段代码主要是每隔两秒就像Struts2的action发出一次请求,从而获取数据库中的数据。
第一次获取数据库第一条记录的数据,第二次第二条,以此类推。假设我现在数据库有N条数据,我希望定时器获取了N次信息之后把定时器清除,要怎么做?数据库操作采用的是hibernate。(ps:不想每次都select count(*) 这样可以做到么)下面来个郁闷的测试代码。main函数如下:

 String properties[]={"sensorInputDataID","value","valueType"};
        List<Object[]> list=baceDao.getSpecifiedRanges(SensorInputData.class, properties,"201","1");
        for(Object[] obj:list)
        {
            System.out.println("id="+obj[0].toString()+", value="+obj[1].toString()+",valueType="+obj[2].toString());
        }
        if(list==null)
        {
            System.out.println("null");
        }

其中bacedao的getSpecifiedRanges代码如下

 public List<Object[]> getSpecifiedRanges(Class<? extends Object> table,String[] properties,String startIndex,String rowCount)
    {
        int propertysLength= properties.length;
        String hql="select ";
        for(int i=0;i<propertysLength-1;i++)
        {
            hql+=properties[i]+",";
        }   
        hql+=properties[propertysLength-1]+" from "+table.getSimpleName();

        System.out.println(hql);        
        List<Object[]> result=sessionFactory.getCurrentSession().createQuery(hql).setFirstResult(Integer.parseInt(startIndex)).setMaxResults(Integer.parseInt(rowCount)).list();
        return result;
    }

执行之后,后台信息如下(我数据库只有200条记录):

图片说明

好像都没有比较好的方案。我本来是想在数据库取到N+1条的时候,报错,然后抓取这个错误来解决的。可惜后台根本不报错。
我现在的方案是,开始的时候查一次数据库的count(*),并将其赋给变量rowCount。当前记录为index,第一次取数据,index为1,第二次为2以此类推。当index==rowCount的时候,再查一次count(*),若此时rowCount>index,则定时器继续执行,迭代上述步骤。否则清除定时器。

  • 写回答

6条回答 默认 最新

  • danielinbiti 2015-06-03 05:36
    关注

    两种方式
    1、setInterval前select count(*) 一次获取总数,然后记录数量,在循环N次取数
    2、每次取一条,如果没有记录了后台返回null,前端就知道没数据了,只是得多取一次才知道。

    另种方式查询数据库的次数都一样,都是N+1次

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况