wasd1151的gravatar头像
wasd11512018-01-12 17:44:21

如何实现记录用户操作到数据库的方法啊?

我想实现记录用户登录后的具体操作(增删改查,以及对哪条数据操作的),然后给这些操作记录存到数据库里去,求大神们帮帮忙

所有回答列表(7)
gypgyp的gravatar头像
gypgyp1月13日

1、分析mysql binlog 的时候,使用了阿里开源的 canal(github上面可以搜到)
2、通过canal我们很方便的获取到了数据库中所有表在同一个事务下的操作记录(修改前、修改后相关的数据),可以根据业务需要将这些操作记录再次保存到数据库中方便查看。
3、在完成第二步的时候,我们只是知道数据库的操作记录,还没有得到是谁引起数据变化的。这个也很简单的,操作数据库前,新建一个用户记录表,每次涉及到修改数据库的时候,在同一个事务中把用户相关信息插入到用户记录表中。因为在同一个事务中的,我们在第二步的的时候就可以得到是谁操作了这个这个记录。

刘大壮要强壮的gravatar头像

Druid,我只知道这么多.........

最代码伊成的gravatar头像
最代码伊成 LV31月14日

对应的curd 的操作方法里面都加上 记录的log,然后把这些操作保存到你的xxx_log表中即可。

kaka的gravatar头像
kaka LV31月15日

spring的aop就可以帮你实现啊,给所有以save*,delete*,update*的方法加上切面,每次调用这些方法后记录下就可以了

Ton,fay的gravatar头像
Ton,fay LV21月15日

主要看你想把压力放在哪个层面上,

1.以来于db的话,可以考虑触发器,每张表增删改的操作都往一张记录表中增加即可。

2.aop service层 ,对增删改做切面,去记录。

3.通过日志的方式,利用nginx或apach等服务器容器 做日志 ,增删改的路径都往文件中写日志,再按期分析用户的操作。(一般用户的实时操作不建议实时获取,一般考虑进行定时任务分析等)

4.dao层手动打日志,并写文日志文件,分析过程与3同理。

无聊居士的gravatar头像
无聊居士1月16日

这是关于数据库操作的你先掌握数据库操作语句比如insert,delete,slelct并找到在相应的java语句即可

BovenRaye的gravatar头像
BovenRaye1月17日

可以用数据库的触发器或者监听

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友