MyBatis拦截器
一、拦截对象和接口实现示例
MyBatis拦截器的作用是在于Dao到DB中间进行额外的处理。大部分情况下通过mybatis的xml配置sql都可以达到想要的DB操作效果,然而存在一些类似或者相同的查询条件或者查询要求,这些可以通过拦截器的实现可以提升开发效率,比如:分页、插入和更新时间/人、数据权限、SQL监控日志等。
-
Mybatis支持四种对象拦截Executor、StatementHandler、PameterHandler和ResultSetHandler
-
Executor:拦截执行器的方法。
-
StatementHandler:拦截Sql语法构建的处理。
-
ParameterHandler:拦截参数的处理。
-
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 }


