Skip to content

DAO拦截器

huiche提供了org.huiche.dao.support.DaoInterceptor 可用于拦截处理dao的内置方法的一些行为,自行使用JdbcExecutor进行的操作,无法拦截. 提供了一系列方法,分别在各个阶段处理

  • preXXX 属于前置操作,是一进入方法即调用的
  • beforeXXX 属于执行之前,此时已经生成了语句,支是待执行(page没有before阶段,因为其底层是调用count和list)
  • afterXXX 执行之后,此时已经执行完毕,获取到结果

所有阶段如果出现错误,均不会继续往下执行

insert相关

  • preInsert 插入前置处理,可在此处进行一些实体类额外修改操作, 如id注入,审计字段等
  • beforeInsert 插入语句执行之前,此时已经 生成插入语句, 修改实体对象不会改变插入语句,但可以直接修改插入语句
  • afterInsert 插入语句执行之后,已执行完毕,一般只用来记录
  • preInsertBatch 批量插入前置处理,可在此处进行一些实体类额外修改操作, 如id注入,审计字段等
  • beforeInsertBatch 批量插入执行之前,此时已经 生成插入语句, 修改实体对象不会改变插入语句,但可以直接修改插入语句
  • afterInsertBatch 批量插入执行之后,已执行完毕,一般只用来记录

delete相关

  • preDelete 删除前置处理, 可返回删除语句自定义, 无需操作可以返回空操作或null,一般仅用于添加前置条件(早于dao其他参数传入的条件)
  • beforeDelete 删除执行之前, 语句已生成, 可直接修改语句,或者返回新语句(如伪删除时Delete改Update)
  • afterDelete 删除执行之后,已执行完毕,一般只用来记录

update 相关

  • preUpdate 更新前置处理,可在此处进行一些实体类额外修改操作, 如审计字段等
  • beforeUpdate 更新执行之前,已生成更新语句, 修改实体类不会作用于语句, 但可直接修改语句
  • afterUpdate 更新执行之后,已执行完毕,一般只用来记录

查询相关(get/list/stream/page)

  • preGet 单条查询前置处理, 可通过返回Select语句自定义来预设条件等,作用于业务参数之前
  • beforeGet 单条查询执行之前,可调整语句,作用于业务参数之后
  • afterGet 单条查询执行之后,已执行完毕,一般只用来记录
  • preList 列表查询前置处理, 可通过返回Select语句自定义来预设条件等,作用于业务参数之前
  • beforeList 列表查询执行之前,可调整语句,作用于业务参数之后
  • afterList 列表查询执行之后,已执行完毕,一般只用来记录
  • preStream stream查询前置处理, 可通过返回Select语句自定义来预设条件等,作用于业务参数之前
  • beforeStream stream查询执行之前,可调整语句,作用于业务参数之后
  • afterStream stream查询执行之后,已执行完毕,一般只用来记录
  • prePage 分页查询前置处理,分页查询内部调用count与list,此处只能拦截判断Pageable或记录日志
  • afterPage 分页查询执行之后,已执行完毕,一般只用来记录

了解添加拦截器