# dbtracer **Repository Path**: macosx/dbtracer ## Basic Information - **Project Name**: dbtracer - **Description**: 基于mybatis插件机制和druid SQL解析的自动记录表数据变更轨迹的工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 18 - **Created**: 2017-08-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##### 考虑以下场景 - 在后台业务系统中,涉及到多人使用同一些功能的时候,可能会有人错误的修改了某些数据,需要追查数据是谁修改的 - 需要查看数据的所有历史修改轨迹 对于这个问题,常规做法是为每一个表都新建一个Log表,通过触发器或者业务代码记录数据变更前后的两条记录,最后再汇总两条记录生成一个对照。 dbtracer这个小工具正是为了自动化地满足以上业务场景的需求而开发。它最终生成像下面这样的轨迹记录: 字段名:{旧值}--->{新值},例如:
用户表更新: 用户名:{gogogo}--->{comecomecome},地址:{武汉}--->{上海} 处理过程如下: - 使用mybatis插件机制拦截SQL的执行 - 使用druid解析拦截下的Update SQL,并生成相同查询条件的Select SQL去查询数据作为变更前的值 - 执行Update SQL - 解析该表的XML配置,生成字段英文与中文意义间的映射.以入参的Update SQL参数作为变更后的值,以查询出的值作为变更前的值,生成变更过的字段前后的对照关系并写入数据库表根据