获取MappedStatement
执行SQL,我们当让想要首先获得被mybatis处理过的SQL,这就是MappedStatement,对应于JDBC中的Statement
我们一起回顾一下JDBC中的步骤:
- 获取驱动
- 获取Connection
- 获取Statement
- 执行SQL,获取ResultSet
- 处理ResultSet
// 获取拦截的参数Object[] args = invocation.getArgs();MappedStatement mappedStatement = (MappedStatement) args[0];
获取Parameter
获取mapper传递的参数:
Object parameter = null;if (args.length > 1) {parameter = args[1];}
获取BoundSql
BoundSql boundSql = mappedStatement.getBoundSql(parameter);
获取原始SQL
String originalSql = boundSql.getSql();
Mybaits中处理BoundSql的方式
PluginUtils.MPBoundSql mpBs = PluginUtils.mpBoundSql(boundSql);mpBs.sql(parserSingle(mpBs.sql(), null));
