品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

【操作日志】如何在一个SpringBoot+Mybatis的项目中设计一个自定义ChangeLog记录?

2023-05-28 06:38:27 来源:博客园


【资料图】

设计一个业务改动信息时的自定义记录,例如新增、修改、删除数据等。并且记录的规则可以通过配置的方式控制。大家需要根据各自业务场景参考,欢迎讨论。伪代码如下:

实体类:

@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();        List fields = 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-05-28 06:38:27

胡麻油的食用方法(胡麻油的功效与作用及食用方法)

​1、胡麻油是一种含有很多种营养的一种东西,胡麻油是具有很多的作用,胡麻油是可以提高身体的抵抗力和免疫

2023-05-28 05:17:36

2023年下半年,做好四件事,守好自己的“钱袋子”,别不当回事

​在阅读此文前,麻烦您点击一下“关注”,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢支持!导

2023-05-28 03:04:13

天天新消息丨中央气象台5月27日18时继续发布大雾黄色预警

​中央气象台5月27日18时继续发布大雾黄色预警:预计,5月27日夜间至28日白天,渤海部分海域、渤海海峡、黄海

2023-05-28 01:58:01

中国陶瓷以哪个地方为盛名_中国陶瓷招聘网

​中国陶瓷招聘网是一家专为陶瓷行业的企(事)业单位和个人提供招聘、求职、培训和相关顾问的网上人力资源综

2023-05-27 23:52:14

全球快资讯:糖尿病人食谱大全(糖尿病人可以吃的水果)

​关于糖尿病人食谱大全,糖尿病人可以吃的水果这个很多人还不知道,现在让我们一起来看看吧!1、糖尿病

2023-05-27 22:24:46

怎么提高照片像素并清晰_怎么提高照片像素

​1、没有任何软件可以在保持画质的前提下增大像素,如果真有这方面的技术---其实理论上就不可能实现-----可以

2023-05-27 21:17:12

悟空神辅-龙珠gt悟空最后去

​1、《七龙珠gt》的最后,孙悟空跟着神龙和龙珠一起到任何人都到不了的地方,并没有说明是什么地方。2、相关

2023-05-27 20:12:06

最高扬程是什么意思_扬程是什么意思_天天新动态

​1、扬程是水泵的扬程。2、水泵的扬程是指水泵能够扬水的高度,通常用H表示,单位是m。3、离心泵的扬程以叶

2023-05-27 19:07:13

易立明任艺术总监《契诃夫的餐桌》首演,以“戏剧”本身为主题_世界快资讯

​《契诃夫的餐桌》是杭程创作的一部以戏剧艺术本身为主题的剧本。剧中“契诃夫 制作人”的饰演者刘齐表示,

2023-05-27 18:12:43

反问修辞手法及其作用(反问修辞手法)

​反问修辞手法及其作用,反问修辞手法这个很多人还不知道,现在让我们一起来看看吧!1、您好!首先反问是修辞

2023-05-27 17:06:59

艺术概论怎么这么难考成试重点什_全球快资讯

​1、艺术概论怎么这么难考整体来说,国内艺术学理论就业情况非常不好,国考省考事业编几乎没能报的,当然你

2023-05-27 16:05:11

每日观察!军人保障卡有效期几年(军人保障卡有什么用)

​来为大家解答以上问题。军人保障卡有效期几年,军人保障卡有什么用这个很多人还不清楚,现在一起跟着来瞧瞧

2023-05-27 14:32:21

全球资讯:宣发(关于宣发介绍)

​大家好,小万来为大家解答以上的问题。宣发,关于宣发介绍这个很多人还不知道,现在让我们一起来看看吧!1、

2023-05-27 13:11:59

世界热文:智通ADR统计 | 5月27日

​周五,美股三大指数上涨,港股ADR指数上涨,按比例计算,收报18844点,较香港收市涨97 97点或0 52%。

2023-05-27 12:48:44

抖音生活服务“心动之城ꔷ南京站”已正式上线

​电商报快讯:5月27日消息,为了让更多游客领略南京美景,体会风土人情,由南京市商务局指导的抖音年度城市

2023-05-27 11:19:27

世界焦点!福特CEO称赞比亚迪;特斯拉车顶维权车主败诉;马斯克脑机接口公司获准启动人体临床试验|超电日报

​整理|曹婷婷出品|超电实验室大家好,这里是《超电日报》,我们将每天为大家筛选出十条重磅新闻,一文阅览

2023-05-27 10:27:08

微信聊天记录删除后恢复 微信聊天记录删除后还能查到 每日讯息

​今天来聊聊关于微信聊天记录删除后恢复,微信聊天记录删除后还能查到的文章,现在就为大家来简单介绍下微信

2023-05-27 10:06:24

快讯:“投资北京”重大项目签约608亿元

​原标题:首届投资北京全球峰会发布10个支持政策“大礼包”(引题)“投资北京”重大项目签约608亿元(主题

2023-05-27 09:19:55

力挺芯片后,比尔盖茨再次夸赞:面对全球挑战,中方做出独特贡献-世界短讯

​此次2023中关村论坛,有80多个国家和地区的嘉宾将出席,近200家外国政府部门、国际组织和机构参与,约100名

2023-05-27 07:48:29

中信重工:拟以自有资金出资联合中信戴卡股份有限公司等合作方合资设立重工戴卡(洛阳)新能源发展有限公司 环球看点

​中信重工(601608):拟以自有资金出资联合中信戴卡股份有限公司等合作方合资设立重工戴卡(洛阳)新能源发展有

2023-05-27 06:09:02

《山海经》为何位列清朝禁书?背后原因引人深思

​清军入关后,在之后长达一百五十多年的岁月中,从顺治皇帝开始,一直到乾隆,一次又一次地掀起了禁书运动,

2023-05-27 05:56:58

环球快资讯丨大脑的蛋白质破坏机器在突触上学习新技巧 突触是神经治疗的潜在目标

​科学家们早就知道,细胞的“蛋白质破坏机器”蛋白酶体在大脑内的蛋白质清除中起着至关重要的作用。然而,发

2023-05-27 03:03:23

草骆驼完整歌词(草骆驼)|全球即时

​今天小红来为大家带来的是草骆驼完整歌词,草骆驼,让我们一起往下看看吧!1、 "伤心童话-胡夏词:易家扬曲

2023-05-27 02:17:28

海口市妇联开展第十九届科技月妇女科技培训暨巾帼兴粮节粮宣传活动 世界视讯

​新海南客户端、南海网、南国都市报5月25日消息(记者姚皓韩星)连日来,海口市第十九届科技月妇女科技培训

2023-05-27 01:44:01

南宁邓颖超纪念馆在哪怎么去

​邓颖超纪念馆位于“三街两巷”南宁历史文化街区的核心区。纪念馆为三进两天井合院式建筑。展览内容由邕城记

2023-05-27 01:14:51

双辽法院:乡里乡亲相互让 法里法外法容情

​案件回顾:  2013年4月姜某在冷某处借款本金1万元,约定月利息2分,到期后姜某迟迟没有偿还借款,直到202

2023-05-27 00:13:46

【热闻】ST粤泰:公司股票可能存在因股价低于1元而终止上市的风险

​ST粤泰公告,公司股票收盘价连续11个交易日低于1元,即使后续9个交易日连续涨停,也将因股价连续20个交易日

2023-05-26 22:30:36

嘉楠科技公布第一季度财报 经营性亏损环比收窄31%|焦点热文

​2023年一季度,公司总销售算力为424 6万TH s,环比2022年第四季度增长了126 8%。在合法合规经营的前提下,

2023-05-26 21:31:12