DBC的知識對于JAVA開發(fā)人員來講在簡單不過的知識了。PreparedStatement的作用更是胸有成竹。我們最常見用到有倆個(gè)方法:executeQuery方法和executeUpdate方法。這倆個(gè)方法之外還有一個(gè)execute方法。只是這個(gè)方法我們很少用。但是mybatis框架就是卻用這個(gè)方法來實(shí)現(xiàn)的。不管mybatis用是哪一個(gè)方法來實(shí)現(xiàn)。有一點(diǎn)可以肯定——那就是必須得到Statement接口實(shí)例。你可以這樣子理解mybatis把如何獲得Statement接口實(shí)例做了一個(gè)完美的封裝。而這一個(gè)封裝就是上一章出現(xiàn)的StatementHandler接口。

mybatis里面實(shí)現(xiàn)StatementHandler接口有四個(gè)類。

RoutingStatementHandler類:筆者把它理解為下面三個(gè)類的代理類。

CallableStatementHandler類:對應(yīng)處理JDBC里面的CallableStatement類。

PreparedStatementHandler類:對應(yīng)處理JDBC里面的PreparedStatement類。

SimpleStatementHandler類:對應(yīng)處理JDBC里面的一般Statement接口實(shí)例(筆者也不知道JDBC是需叫他什么)。

正如上面所講的筆者把RoutingStatementHandler類理解為三個(gè)類的代理類。mybatis并沒有直接去引用后面三個(gè)類。而是通過RoutingStatementHandler類來判斷當(dāng)前到底要調(diào)用哪個(gè)類。再去執(zhí)行相關(guān)的Statement接口實(shí)例。

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

 public StatementHandler newStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
    StatementHandler statementHandler = new RoutingStatementHandler(executor, mappedStatement, parameterObject, rowBounds, resultHandler, boundSql);
    statementHandler = (StatementHandler) interceptorChain.pluginAll(statementHandler);    return statementHandler;
  }

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

網(wǎng)友評論