读了一些代码,代码的心智模型很重要 -> 结构决定算法。

1. 一个代码片段

  1. /**
  2. * 执行任意的sql mapper
  3. */
  4. @Select("${sql}")
  5. @Options(fetchSize = 500,timeout = 100)
  6. List<Object> querySQL(String sql, @Param("param") Map<String, Object> param);

从这个一个代码片段,mybatis到底需要做哪些事情?

2. Mybatis模型

2. 从一个代码片段,探讨Mybatis心智模型 - 图1

从这个初略的模型,我们可以来提出几个问题:1. 上面的例子中,如何转换成一个MappedStatement?他们SqlSource、Parameter和Result是如何确定,以及各自的作用? 2. MappedStatement是怎么被管理的?在querySQL被调用的时候,做了哪些事情? 3. 核心以来了Java的那些基础能力?

3. 架构模式:Invocation模式

4. 总结