MyBatis拦截器

一、拦截对象和接口实现示例

        MyBatis拦截器的作用是在于Dao到DB中间进行额外的处理。大部分情况下通过mybatis的xml配置sql都可以达到想要的DB操作效果,然而存在一些类似或者相同的查询条件或者查询要求,这些可以通过拦截器的实现可以提升开发效率,比如:分页、插入和更新时间/人、数据权限、SQL监控日志等。

  • Mybatis支持四种对象拦截Executor、StatementHandler、PameterHandler和ResultSetHandler

  1. Executor:拦截执行器的方法。

  2. StatementHandler:拦截Sql语法构建的处理。

  3. ParameterHandler:拦截参数的处理。

  4. ResultHandler:拦截结果集的处理。

 1 public interface Executor {
 2     ResultHandler NO_RESULT_HANDLER = null;
 3     int update(MappedStatement var1, Object var2) throws SQLException;
 4     <E> List<E> query(MappedStatement var1, Object var2, RowBounds var3, ResultHandler var4, CacheKey var5, BoundSql var6) throws SQLException;
 5     <E> List<E> query(MappedStatement var1, Object var2, RowBounds var3, ResultHandler var4) throws SQLException;
 6     <E> Cursor<E> queryCursor(MappedStatement var1, Object var2, RowBounds var3) throws SQLException;
 7     List<BatchResult> flushStatements() throws SQLException;
 8     void commit(boolean var1) throws SQLException;
 9     void rollback(boolean var1) throws SQLException;
10     CacheKey createCacheKey(MappedStatement var1, Object var2, RowBounds var3, BoundSql var4);
11     boolean isCached(MappedStatement var1, CacheKey var2);
12     void clearLocalCache();
13     void deferLoad(MappedStatement var1, MetaObject var2, String var3, CacheKey var4, Class<?> var5);
14     Transaction getTransaction();
15     void close(boolean var1);
16     boolean isClosed();
17     void setExecutorWrapper(Executor var1);
18 }
19 public interface StatementHandler {
20     Statement prepare(Connection var1, Integer var2) throws SQLException;
21     void parameterize(Statement var1) throws SQLException;
22     void batch(Statement var1) throws SQLException;
23     int update(Statement var1) throws SQLException;
24     <E> List<E> query(Statement var1, ResultHandler var2) throws SQLException;
25     <E> Cursor<E> queryCursor(Statement var1) throws SQLException;
26     BoundSql getBoundSql();
27     ParameterHandler getParameterHandler();
28 }
29 public interface ParameterHandler {
30     Object getParameterObject();
31     void setParameters(PreparedStatement var1) throws SQLException;
32 }
33 public interface ResultHandler<T> {
34     void handleResult(ResultContext<? extends T> var1);
35 }
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » MyBatis拦截器