mybatis可以用@Intercepts实现,由于使用了druid,由于我nutz也是druid,我想在所有执行sql的地方进行aop,然后可以参考mybatis的实现,主要是nutzdao有提供拦截所有sql的方法吗?mybatis实现代码如下:
SQLStatementParser parser = new MySqlStatementParser(sql);
// 使用Parser解析生成AST,这里SQLStatement就是AST
SQLStatement sqlStatement = parser.parseStatement();
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
sqlStatement.accept(visitor);
Map<TableStat.Name, TableStat> mapTable = visitor.getTables();
for (Map.Entry<TableStat.Name, TableStat> entry : mapTable.entrySet()){
sql = sql.replace(entry.getKey().getName(), dbinstance + "."+entry.getKey().getName());
}
//
metaStatementHandler.setValue("delegate.boundSql.sql", sql);
return invocation.proceed();