Plugins
摘一段來自MyBatis官方文檔的文字。
MyBatis允許你在某一點攔截已映射語句執(zhí)行的調(diào)用。默認情況下,MyBatis允許使用插件來攔截方法調(diào)用
Executor(update、query、flushStatements、commint、rollback、getTransaction、close、isClosed)
ParameterHandler(getParameterObject、setParameters)
ResultSetHandler(handleResultSets、handleOutputParameters)
StatementHandler(prepare、parameterize、batch、update、query)
這些類中方法的詳情可以通過查看每個方法的簽名來發(fā)現(xiàn),而且它們的源代碼存在于MyBatis發(fā)行包中。你應該理解你所覆蓋方法的行為,假設(shè)你所做的要比監(jiān)視調(diào)用要多。如果你嘗試修改或覆蓋一個給定的方法,你可能會打破MyBatis的核心。這是低層次的類和方法,要謹慎使用插件。
插件示例:打印每條SQL語句及其執(zhí)行時間
以下通過代碼來演示一下如何使用MyBatis的插件,要演示的場景是:打印每條真正執(zhí)行的SQL語句及其執(zhí)行的時間。這是一個非常有用的需求,MyBatis本身的日志可以記錄SQL,但是有以下幾個問題: