标签:port jpg ack 而不是 target image property config resource
从官方仓库 https://github.com/mybatis/mybatis-3 Fork
出属于自己的仓库。为什么要 Fork
?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。
使用 IntelliJ IDEA
从 Fork
出来的仓库拉取代码。
本文使用的 MyBatis 版本为 3.5.0-SNAPSHOT
。
MyBatis 想要调试,非常方便,只需要打开 org.apache.ibatis.autoconstructor.AutoConstructorTest
单元测试类,任意一个单元测试方法,右键,开始调试即可。
当然,考虑到让大家更好的理解 AutoConstructorTest 这个类,下面,我们还是详细解析下。AutoConstructorTest 所在在 autoconstructor
包下,整体结构如下:
mybatis-config.xml
,MyBatis 配置文件。XML 如下:
|
<environments />
标签中,配置了事务管理和数据源。考虑到减少外部依赖,所以使用了 HSQLDB 。<mappers />
标签中,配置了需要扫描的 Mapper 文件。目前,仅仅扫描 AutoConstructorMapper.xml
文件。AutoConstructorMapper.xml
,Mapper 文件。代码如下:
|
org.apache.ibatis.autoconstructor.AutoConstructorMapper
。
public interface AutoConstructorMapper {
|
CreateDB.sql
文件,用于单元测试里,初始化数据库的数据。如下:
DROP TABLE subject
|
subject
表,并初始化三条数据。extensive_subject
表,并初始化三条数据。在 AutoConstructorMapper 中,我们可以看到有四个 POJO 类。但是,从 CreateDB.sql
中,实际只有两个表。这个是为什么呢?继续往下看噢。
package org.apache.ibatis.autoconstructor;
|
subject
表。@AutomapConstructor
注解,表示 MyBatis 查询后,在创建 AnnotatedSubject 对象,使用该构造方法。
package org.apache.ibatis.autoconstructor;
|
subject
表。weight
和 height
方法参数的类型是 int
,而不是 Integer 。那么,如果 subject
表中的记录,这两个字段为 NULL
时,会创建 PrimitiveSubject 对象报错。
package org.apache.ibatis.autoconstructor;
|
subject
表。height
方法参数的类型是 Height ,而不是 Integer 。因为 MyBatis 无法识别 Height 类,所以会创建 BadSubject 对象报错。
package org.apache.ibatis.autoconstructor;
|
extensive_subject
表。org.apache.ibatis.autoconstructor.AutoConstructorTest
,单元测试类。
private static SqlSessionFactory sqlSessionFactory;
|
mybatis-config.xml
配置文件。CreateDB.sql
SQL 文件。标签:port jpg ack 而不是 target image property config resource
原文地址:https://www.cnblogs.com/siye1989/p/11619153.html