MyBatis最后一步一定是处理相关的结果——把数据映射成对应的模型对象。事实上在笔者看来如果读者们了解了mybatis如何去执行数据库,又是如何处理数据结果。那么就了解了mybatis的主要路线。因为不管是什么样子的ORM最终都是要执行和处理结果的。而mybatis的亮点笔者也讲了——管理sql语句。所以相对而言,处理结果就显得十分的次要。但是笔者还是希望能在这里停留一下,研究他是如何处理结果。

mybatis处理结果的代码都在DefaultResultSetHandler类里面。很抱歉的是笔者去掉了程序是如何执行到DefaultResultSetHandler类的。这里面还是希望读者们自行的去跟踪一下。DefaultResultSetHandler类的handleResultSets方法便是笔者切入的代码。事实上当代码执行到handleResultSets方法的时候,已经执行了数据库。这在PreparedStatementHandler类里面就体现出来了。如下

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

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

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

用过mybatis的人都知道resultMap节点的作用。select节点的resultMap属性就是用来指点使用哪一个resultMap节点。而返回的结果也是用这一个节点来设置的。如下

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

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