java如何实现定时从数据库查询新增的数据,?

主要是数据库新增的数据怎么样查询出来,定时查询所有数据我会,查询新增的数据该怎么实现呢?... 主要是数据库新增的数据怎么样查询出来,定时查询所有数据我会,查询新增的数据该怎么实现呢? 展开
 我来答
darkdragonking
推荐于2018-03-05 · 超过22用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:27.1万
展开全部
有几种方法,我觉得第二种,触发器是个好主意,见下。
第一种,开个线程,定式扫描,比如每一分钟查询一次数据库,将前后数据做比对(比对方法可以在java端先把第一次的数据存到一个集合中,然后每次查询集合之后,将两次的内容在java端作比较)
第二种,在数据库端,比如oracle数据库,对这个要监控的表A建个触发器,这个表中如果有数据改变,包括楼主要的新增,修改,删除,都可以被触发,然后把改变的内容存到另一个表B中,然后java就直接从这个B表中查询就可以了,省去了比对的工作。
第三种,如果你是用的类似spring这种框架,spring自带有类似crontab的功能,可以写个一般的java类,这个类中仅仅干查询数据,比对数据的工作,然后调度的工作交给spring框架来做,基本来说这个方法与第一种相比,只是调度者不同而已
第四种,可以随便写个java类,进行查询比对,然后在跑这个java程序的主机上,比如linux主机,配置一个crontab,来定时调度。
追问
第一种能详细说说么?
追答
第一种,这么说吧,就是你随便写个类,继承与thread类。
在这个类的run方法中,定义两个list,用第一个list保存你每次查询数据库中的结果集,
然后用第二个list保存之前一次的数据。
醉消耗内存的一步来了,因为要比较,你肯定需要逐个对比,看当前记录是否与之前的有重复的地方。如果不是重复的,那么肯定是新增的,如果是重复的,,,也未必就不是新增,因为有可能是以下的场景
你第一查询,查到了一条新增的记录,然后在第一和第二次查询的间隙中,这条记录被删除,然后又新增回来,这样,在一定情况下也算新增,所以这个情况的处理要根据你的业务逻辑来做处理,我不能给你个适合你的答案啦
基本思路就是这样,有问题问我哈
QQMSD8
推荐于2016-05-04 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
你想找出新增的数据,那你必须要有一个标识,用来标识是否为新增的
例如表中flag字段,默认为0,处理过之后就为1
这样,你才能判断哪条数据是新的,哪条数据是老的了

或者用时间判断
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小锄头andrew
2014-09-05 · TA获得超过627个赞
小锄头andrew
采纳数:224 获赞数:627

向TA提问 私信TA
展开全部
  在表上新增一个字段,比如INSERT_TIMESTAMP,要求insert数据的时候必须插入当时的时间。
  你select的时候就检查当前时间和上次查询的时间(可以在页面或者内存里记录这个上次查询的时间,或者根据你的定时策略,反推到你上次查询的时间)内的数据可以OK
追问
上次查询的时间怎么保存?保存到哪里?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MrGorden
2014-09-05
知道答主
回答量:23
采纳率:0%
帮助的人:15.7万
展开全部
多线程还是单线程?如果是多线程来处理这个问题的话要注意可能一条数据可能会被多个线程捞到,这个时候你要考虑用同步块,而识别新旧数据只需要用一个字段来标识即可
追问
这个?能详细说说么 ??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
火羽传
2014-09-05 · 超过30用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:39.8万
展开全部
给数据加入time字段(入库时间)
查询大于你上次查询时间的数据,ok
更多追问追答
追问
上次查询的时间怎么保存?
追答
可以放到static 变量里,也可以写进txt
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式