Listener/Interceptor

最后更新:2023-09-29 23:16:44 | 状态:未完成

示例源码参考 【anyline-simple-data-jdbc-listener 】【anyline-simple-data-jdbc-interceptor

EntityListener

AnylineController中提供了entity()用来把request中的参考封装到Entity或DataRow,

在entity()方法最后会触发EntityListener.after();

可以在after中put创建时间、创建人、修改时间等

ControllerListener

AnylineController中提供了condition()用来根据提供配置把request中的参数值封装到ConfigStore中ConfigStore将被用来生成SQL
condition()方法最后会调用ControllerListener.after()
public ConfigStore after(HttpServletRequest request, ConfigStore configs);

可以在这个after中修改查询条件


DMListener
DML监听相关操作

DDListener
DDL监听相关操作

Interceptor:
DML方面分别提供了独立的了QueryInterceptor、InsertInterceptor、UpdateInterceptor、DeleteInterceptor、CountInterceptor、ExcuteInterceptor
DDL方面由于参数基本一致,所以只提供了一个统一的DDInterceptor,在实现DDInterceptor时需要明确哪些命令(参考文未的枚举值)会触发当前拦截器

Listener中的方法比较多,会监听SQL执行的各个阶段,一般一个项目只需要一个
Interceptor中只有prepare,before,after,只有Interceptor相关的SQL才会触发。

enum DML{
	SELECT,
	INSERT,
	UPDATE,
	DELETE,
	EXISTS,
	EXECUTE,
	PROCEDURE
}
enum DDL{
	TABLE_CREATE    ("表创建"),
	TABLE_ALTER     ("表结构修改"),
	TABLE_DROP      ("表删除"),
	TABLE_RENAME    ("表重命名"),
	TABLE_COMMENT   ("表修改备注"),

	VIEW_CREATE   ("视图创建"),
	VIEW_ALTER    ("视图修改"),
	VIEW_DROP     ("视图删除"),
	VIEW_RENAME   ("视图重命名"),

	MASTER_TABLE_CREATE   ("超表创建"),
	MASTER_TABLE_ALTER    ("超表修改"),
	MASTER_TABLE_DROP     ("超表删除"),
	MASTER_TABLE_RENAME   ("超表重命名"),

	PARTITION_TABLE_CREATE   ("子表(分区表)创建"),
	PARTITION_TABLE_ALTER    ("子表(分区表)修改"),
	PARTITION_TABLE_DROP     ("子表(分区表)删除"),
	PARTITION_TABLE_RENAME   ("子表(分区表)重命名"),

	COLUMN_ADD   ("列创建"),
	COLUMN_ALTER    ("列结构修改"),
	COLUMN_DROP     ("列删除"),
	COLUMN_RENAME   ("列重命名"),

	TAG_ADD   ("标签(子表列)创建"),
	TAG_ALTER    ("标签(子表列)结构修改"),
	TAG_DROP     ("标签(子表列)删除"),
	TAG_RENAME   ("标签(子表列)重命名"),

	PRIMARY_ADD   ("主键创建"),
	PRIMARY_ALTER    ("主键修改"),
	PRIMARY_DROP     ("主键删除"),
	PRIMARY_RENAME   ("主键重命名"),

	FOREIGN_ADD   ("外键创建"),
	FOREIGN_ALTER    ("外键修改"),
	FOREIGN_DROP     ("外键删除"),
	FOREIGN_RENAME   ("外键重命名"),

	INDEX_ADD   ("索引创建"),
	INDEX_ALTER    ("索引修改"),
	INDEX_DROP     ("索引删除"),
	INDEX_RENAME   ("索引重命名"),

	CONSTRAINT_ADD   ("约束添加"),
	CONSTRAINT_ALTER    ("约束修改"),
	CONSTRAINT_DROP     ("约束删除"),
	CONSTRAINT_RENAME   ("约束重命名"),

	PROCEDURE_CREATE   ("存储过程创建"),
	PROCEDURE_ALTER    ("存储过程修改"),
	PROCEDURE_DROP     ("存储过程删除"),
	PROCEDURE_RENAME   ("存储过程重命名"),

	FUNCTION_CREATE   ("函数创建"),
	FUNCTION_ALTER    ("函数修改"),
	FUNCTION_DROP     ("函数删除"),
	FUNCTION_RENAME   ("函数重命名"),

	TRIGGER_ADD   ("触发器创建"),
	TRIGGER_ALTER    ("触发器修改"),
	TRIGGER_DROP     ("触发器删除"),
	TRIGGER_RENAME   ("触发器重命名"),
	;
	private final String title;
	DDL(String title){
		this.title = title;
	}
}

最近更新 搜索 提交