MyBatis最后一步一定是處理相關的結果——把數(shù)據(jù)映射成對應的模型對象。事實上在筆者看來如果讀者們了解了mybatis如何去執(zhí)行數(shù)據(jù)庫,又是如何處理數(shù)據(jù)結果。那么就了解了mybatis的主要路線。因為不管是什么樣子的ORM最終都是要執(zhí)行和處理結果的。而mybatis的亮點筆者也講了——管理sql語句。所以相對而言,處理結果就顯得十分的次要。但是筆者還是希望能在這里停留一下,研究他是如何處理結果。

mybatis處理結果的代碼都在DefaultResultSetHandler類里面。很抱歉的是筆者去掉了程序是如何執(zhí)行到DefaultResultSetHandler類的。這里面還是希望讀者們自行的去跟蹤一下。DefaultResultSetHandler類的handleResultSets方法便是筆者切入的代碼。事實上當代碼執(zhí)行到handleResultSets方法的時候,已經執(zhí)行了數(shù)據(jù)庫。這在PreparedStatementHandler類里面就體現(xiàn)出來了。如下

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

  public <E> List<E> query(Statement statement, ResultHandler resultHandler) throws SQLException {
    PreparedStatement ps = (PreparedStatement) statement;    ps.execute();    return resultSetHandler.<E> handleResultSets(ps);
  }

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

用過mybatis的人都知道resultMap節(jié)點的作用。select節(jié)點的resultMap屬性就是用來指點使用哪一個resultMap節(jié)點。而返回的結果也是用這一個節(jié)點來設置的。如下

seo優(yōu)化培訓,網絡推廣培訓,網絡營銷培訓,SEM培訓,網絡優(yōu)化,在線營銷培訓

<select id="SelectProducts" resultMap="result" >
   &