【操作日志】如何在一个SpringBoot+Mybatis的项目中设计一个自定义ChangeLog记录?
【资料图】
设计一个业务改动信息时的自定义记录,例如新增、修改、删除数据等。并且记录的规则可以通过配置的方式控制。大家需要根据各自业务场景参考,欢迎讨论。伪代码如下:
实体类:
@TableName("tbl_user")User{ String id String name Integer age String addr}
DAO层:
UserDao{ getById(Long id); list(Wrapper wrapper);}
自定义注解:
MybatisPropAnno{ String value Class> daoClazz}
Http接口请求参数:
SaveReq{ @MybatisPropAnno(value="name", daoClazz = UserDao.class) String userName; @MybatisPropAnno(value="age", daoClazz = UserDao.class) Integer userAge;}UpdateReq{ @MybatisPropAnno(value="id", daoClazz = UserDao.class) String userNo; @MybatisPropAnno(value="name", daoClazz = UserDao.class) String userName; @MybatisPropAnno(value="age", daoClazz = UserDao.class) Integer userAge; @MybatisPropAnno(value="id", daoClazz = DepartDao.class) String departId; String departAddress;}
Http接口:
TestController{ public void save(SaveReq saveReq){ operTypeInheritedThreadLocal.set(Enum."添加数据"); sthInheritedThreadLocal.set(saveReq); }; public void update(UpdateReq updateReq){ operTypeInheritedThreadLocal.set(Enum."更新数据"); sthInheritedThreadLocal.set(updateReq); }; @MybatisLogAnno("删除数据") public void delete(){}; @MybatisLogAnno("查询数据") public void query(){}; public void other(){};}
SQL拦截器:
SqlInterceptor{ public Object intercept(Mybatis param){ OperType operType = operTypeInheritedThreadLocal.get if(operType == null){ return ; } // insert/update/delete/select String type = param.getSqlType(); if(operType == select){ return ; } String sql = param.getSql(); String tableName = sql.getTableName(); Listfields = Reflect.getFields(sthInheritedThreadLocal.get()); for(Field field : fields){ MybatisPropAnno propAnno = field.getAnnotation(MybatisPropAnno); if(propAnno == null){ continue; } if(propAnno.getDaoClazz.getEntity.getTableName.equals(tableName )){ User oldUser = new JSONObject(); User newUser = new JSONObject(); if(type == insert){ oldUser = new JSONObject(); newUser = getInsertInfo(sql); } if(type == update){ oldUser = SpringContext.get(daoClazz).getById(field.value()); newUser = getUpdateInfo(sql); insertChangeLog(new JSONObject(), JSON.toJson(newUser)); } if(type == delete){ oldUser = SpringContext.get(daoClazz).getById(field.value()); newUser = new JSONObject(); } insertChangeLog(operType, traceId, oldUser, newUser); break; } } }}
Spring切面:
SpringAop { public Object doAround(){ operTypeInheritedThreadLocal.remove }}
数据库设计:Table:dc_change_logid changeTime changeType traceId oldInfo newInfo httpMethod table operator changeDesc1 2020-01-01 添加用户 123 {} {"name":"lil"} com.xx.TestCtrl.saveUser tbl_user admin descxxxxxxxxxxxx2 2020-01-01 修改用户 124 {"name":"lil"} {"name":"a"} com.xx.TestCtrl.updateUser tbl_user admin descxxxxxxxxxxxx3 2020-01-01 修改用户 124 {"addr":"南山"} {"addr":"福田"} com.xx.TestCtrl.updateUser tbl_department admin descxxxxxxxxxxxxTable:dc_change_ruleid httpMethod table showRule1 com.xx.TestCtrl.saveUser tbl_user [{"propKey":"name", "propDesc":"name detail info"}]1 com.xx.TestCtrl.updateUser tbl_user [{"propKey":"name", "propDesc":"name detail info"}]1 com.xx.TestCtrl.updateUser tbl_department [{"propKey":"addr", "propDesc":"addr detail info"}]
标签:
相关文章
【操作日志】如何在一个SpringBoot+Mybatis的项目中设计一个自定义ChangeLog记录?
设计一个业务改动信息时的自定义记录,例如新增、修改、删除数据等。并且记录的规则可以通过配置的方式控制
2023年下半年,做好四件事,守好自己的“钱袋子”,别不当回事
在阅读此文前,麻烦您点击一下“关注”,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢支持!导
天天新消息丨中央气象台5月27日18时继续发布大雾黄色预警
中央气象台5月27日18时继续发布大雾黄色预警:预计,5月27日夜间至28日白天,渤海部分海域、渤海海峡、黄海
易立明任艺术总监《契诃夫的餐桌》首演,以“戏剧”本身为主题_世界快资讯
《契诃夫的餐桌》是杭程创作的一部以戏剧艺术本身为主题的剧本。剧中“契诃夫 制作人”的饰演者刘齐表示,
世界焦点!福特CEO称赞比亚迪;特斯拉车顶维权车主败诉;马斯克脑机接口公司获准启动人体临床试验|超电日报
整理|曹婷婷出品|超电实验室大家好,这里是《超电日报》,我们将每天为大家筛选出十条重磅新闻,一文阅览
微信聊天记录删除后恢复 微信聊天记录删除后还能查到 每日讯息
今天来聊聊关于微信聊天记录删除后恢复,微信聊天记录删除后还能查到的文章,现在就为大家来简单介绍下微信
力挺芯片后,比尔盖茨再次夸赞:面对全球挑战,中方做出独特贡献-世界短讯
此次2023中关村论坛,有80多个国家和地区的嘉宾将出席,近200家外国政府部门、国际组织和机构参与,约100名
中信重工:拟以自有资金出资联合中信戴卡股份有限公司等合作方合资设立重工戴卡(洛阳)新能源发展有限公司 环球看点
中信重工(601608):拟以自有资金出资联合中信戴卡股份有限公司等合作方合资设立重工戴卡(洛阳)新能源发展有
环球快资讯丨大脑的蛋白质破坏机器在突触上学习新技巧 突触是神经治疗的潜在目标
科学家们早就知道,细胞的“蛋白质破坏机器”蛋白酶体在大脑内的蛋白质清除中起着至关重要的作用。然而,发
海口市妇联开展第十九届科技月妇女科技培训暨巾帼兴粮节粮宣传活动 世界视讯
新海南客户端、南海网、南国都市报5月25日消息(记者姚皓韩星)连日来,海口市第十九届科技月妇女科技培训
【热闻】ST粤泰:公司股票可能存在因股价低于1元而终止上市的风险
ST粤泰公告,公司股票收盘价连续11个交易日低于1元,即使后续9个交易日连续涨停,也将因股价连续20个交易日
嘉楠科技公布第一季度财报 经营性亏损环比收窄31%|焦点热文
2023年一季度,公司总销售算力为424 6万TH s,环比2022年第四季度增长了126 8%。在合法合规经营的前提下,