diff --git a/src/main/java/org/apache/ibatis/binding/MapperMethod.java b/src/main/java/org/apache/ibatis/binding/MapperMethod.java index b51f1e1926..f62ba57d7b 100644 --- a/src/main/java/org/apache/ibatis/binding/MapperMethod.java +++ b/src/main/java/org/apache/ibatis/binding/MapperMethod.java @@ -194,6 +194,7 @@ public static class SqlCommand { private final SqlCommandType type; public SqlCommand(Configuration configuration, Class mapperInterface, Method method) { + //接口全限定名+点+方法名称 如 com.jd.UserDao.findOne String statementName = mapperInterface.getName() + "." + method.getName(); MappedStatement ms = null; if (configuration.hasStatement(statementName)) { diff --git a/src/main/java/org/apache/ibatis/builder/BaseBuilder.java b/src/main/java/org/apache/ibatis/builder/BaseBuilder.java index 79f1071f15..be2b2a122d 100644 --- a/src/main/java/org/apache/ibatis/builder/BaseBuilder.java +++ b/src/main/java/org/apache/ibatis/builder/BaseBuilder.java @@ -33,7 +33,7 @@ */ /** * 构建器的基类,建造者模式 - * + * 也有模板模式 */ public abstract class BaseBuilder { //需要配置,类型别名注册,类型处理器注册3个东西 diff --git a/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java b/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java index 0977563db9..a13a409f82 100644 --- a/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java +++ b/src/main/java/org/apache/ibatis/builder/xml/XMLConfigBuilder.java @@ -428,7 +428,16 @@ private void databaseIdProviderElement(XNode context) throws Exception { } } + /**在构建Configuration对象时添加了 type="JDBC" 对应的事务工厂 + * public Configuration() { + * //注册更多的类型别名,至于为何不直接在TypeAliasRegistry里注册,还需进一步研究 + * typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class); + * @param context + * @return + * @throws Exception + */ //7.1事务管理器 + // // // diff --git a/src/main/java/org/apache/ibatis/executor/BaseExecutor.java b/src/main/java/org/apache/ibatis/executor/BaseExecutor.java index a5d6eab48d..69d177d5f5 100644 --- a/src/main/java/org/apache/ibatis/executor/BaseExecutor.java +++ b/src/main/java/org/apache/ibatis/executor/BaseExecutor.java @@ -47,7 +47,7 @@ */ /** * 执行器基类 - * + * 模板模式 */ public abstract class BaseExecutor implements Executor { diff --git a/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java b/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java index 01b66b7028..84ff25b68b 100644 --- a/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java +++ b/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java @@ -38,7 +38,7 @@ */ /** * 语句处理器的基类 - * + * 模板模式 */ public abstract class BaseStatementHandler implements StatementHandler { diff --git a/src/main/java/org/apache/ibatis/executor/statement/RoutingStatementHandler.java b/src/main/java/org/apache/ibatis/executor/statement/RoutingStatementHandler.java index bd075ea4a4..6f551d81b4 100644 --- a/src/main/java/org/apache/ibatis/executor/statement/RoutingStatementHandler.java +++ b/src/main/java/org/apache/ibatis/executor/statement/RoutingStatementHandler.java @@ -33,7 +33,8 @@ */ /** * 路由选择语句处理器,有点像代理模式 - * + * 大方向是委托模式 + * 细节是策略模式,根据不同类型,选择不同处理策略 */ public class RoutingStatementHandler implements StatementHandler { diff --git a/src/main/java/org/apache/ibatis/jdbc/SqlRunner.java b/src/main/java/org/apache/ibatis/jdbc/SqlRunner.java index e812c9d11d..879d09b030 100644 --- a/src/main/java/org/apache/ibatis/jdbc/SqlRunner.java +++ b/src/main/java/org/apache/ibatis/jdbc/SqlRunner.java @@ -56,7 +56,7 @@ public void setUseGeneratedKeySupport(boolean useGeneratedKeySupport) { this.useGeneratedKeySupport = useGeneratedKeySupport; } - /* + /** * Executes a SELECT statement that returns one row. * * @param sql The SQL @@ -72,7 +72,7 @@ public Map selectOne(String sql, Object... args) throws SQLExcep return results.get(0); } - /* + /** * Executes a SELECT statement that returns multiple rows. * * @param sql The SQL @@ -95,7 +95,7 @@ public List> selectAll(String sql, Object... args) throws SQ } } - /* + /** * Executes an INSERT statement. * * @param sql The SQL @@ -141,7 +141,7 @@ public int insert(String sql, Object... args) throws SQLException { } } - /* + /** * Executes an UPDATE statement. * * @param sql The SQL @@ -163,7 +163,7 @@ public int update(String sql, Object... args) throws SQLException { } } - /* + /** * Executes a DELETE statement. * * @param sql The SQL @@ -175,7 +175,7 @@ public int delete(String sql, Object... args) throws SQLException { return update(sql, args); } - /* + /** * Executes any string as a JDBC Statement. * Good for DDL * diff --git a/src/main/java/org/apache/ibatis/mapping/MappedStatement.java b/src/main/java/org/apache/ibatis/mapping/MappedStatement.java index bd8cdd81cd..c51a50bd18 100644 --- a/src/main/java/org/apache/ibatis/mapping/MappedStatement.java +++ b/src/main/java/org/apache/ibatis/mapping/MappedStatement.java @@ -33,12 +33,15 @@ */ /** * 映射的语句 - * + * 对应一个mapper中的insert update delete select 标签的完整内容 */ public final class MappedStatement { private String resource; private Configuration configuration; + /** + * insert update delete select 标签中设置的 id + */ private String id; private Integer fetchSize; private Integer timeout; diff --git a/src/main/java/org/apache/ibatis/session/Configuration.java b/src/main/java/org/apache/ibatis/session/Configuration.java index 7940418414..d36f818df2 100644 --- a/src/main/java/org/apache/ibatis/session/Configuration.java +++ b/src/main/java/org/apache/ibatis/session/Configuration.java @@ -126,7 +126,7 @@ public class Configuration { //对象工厂和对象包装器工厂 protected ObjectFactory objectFactory = new DefaultObjectFactory(); protected ObjectWrapperFactory objectWrapperFactory = new DefaultObjectWrapperFactory(); - //映射注册机 + //映射注册器 protected MapperRegistry mapperRegistry = new MapperRegistry(this); //默认禁用延迟加载 @@ -142,6 +142,7 @@ public class Configuration { */ protected Class configurationFactory; + //拦截器执行链,pagehelper插件就是通过自定义拦截器实现分页 protected final InterceptorChain interceptorChain = new InterceptorChain(); //类型处理器注册机 protected final TypeHandlerRegistry typeHandlerRegistry = new TypeHandlerRegistry(); diff --git a/src/main/java/org/apache/ibatis/session/SqlSession.java b/src/main/java/org/apache/ibatis/session/SqlSession.java index f675f1865d..e74dfed000 100644 --- a/src/main/java/org/apache/ibatis/session/SqlSession.java +++ b/src/main/java/org/apache/ibatis/session/SqlSession.java @@ -86,6 +86,7 @@ public interface SqlSession extends Closeable { * 这一点。 * * 一般情况下公司都会编写自己的Mybatis 物理分页插件 + * 可以使用第三方开源分页插件 比如 pagehelper 使用的是Mybatis的拦截器实现 * @param the returned list element type * @param statement Unique identifier matching the statement to use. * @param parameter A parameter object to pass to the statement. diff --git a/src/main/java/org/apache/ibatis/type/BaseTypeHandler.java b/src/main/java/org/apache/ibatis/type/BaseTypeHandler.java index 1cd1c55627..6f62929f2a 100644 --- a/src/main/java/org/apache/ibatis/type/BaseTypeHandler.java +++ b/src/main/java/org/apache/ibatis/type/BaseTypeHandler.java @@ -28,7 +28,7 @@ */ /** * 类型处理器的基类 - * + * 模板模式 */ public abstract class BaseTypeHandler extends TypeReference implements TypeHandler {