博主精品——玩转历史表,策略模式与自定义注解的高级自定义实现技巧

DBC 431 0
温馨提示

目前还暂未是最终版本,文章进度将跟随开发进度同步进行,目前已实现基本的单表新增、修改、删除的日志操作

一、必备类

1.自定义注解

FieldIdentifyAnnotation

OperatorLogAnnotation

2.注解的关键实现(关键代码)

温馨提示

实现模式为环绕方法实现

OperatorLogAspect

3.核心策略类(重点)

温馨提示

采用设计模式——策略模式,符合开闭原则,单一职责,最少知道!

策略接口

IOperateLogStrategy

【新增】策略类:AddOperatorLogStrategy

【删除】策略类:DeleteOperatorLogStrategy

【更新】策略类:UpdateOperatorLogStrategy

4.枚举类

枚举基类接口

日志类型

操作对象类型

字段类型

5.一些工具类

枚举工具类

操作日志查询工具类

操作日志工具类

6.静态获取Bean

静态获取Bean

7.必要的类

基本常量

新增对象内容生成器

更新对象内容生成器

操作内容格式

操作日志内容元模型

构建操作日志内容元数据

变更内容记录

表名常量

8.操作日志Mapper

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.test05.demo.model.OperatorLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: DBC
 * @Date: 2023/11/11
 * @Description: 操作日志Mapper
 */
@Mapper
public interface OperatorLogMapper  {

    Integer insertDynamicTable(@Param("tableName")String tableName, @Param("operatorLog") OperatorLog operatorLog);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.test05.demo.mapper.OperatorLogMapper">

    <insert id="insertDynamicTable">
        INSERT INTO
            ${tableName}
        (
            id, `type`, operator_obj_id, operator_obj_type, content,
            user_id, start_time, end_time, has_finish, fail_reason
        )
        VALUES
            (
                #{operatorLog.id}, #{operatorLog.type}, #{operatorLog.operatorObjId},
                #{operatorLog.operatorObjType}, #{operatorLog.content}, #{operatorLog.userId},
                #{operatorLog.startTime}, #{operatorLog.endTime}, #{operatorLog.hasFinish},
                #{operatorLog.failReason}
            )
    </insert>
</mapper>

发表评论 取消回复
表情 图片 链接 代码

分享