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