序言
Mybatis是我们常用的持久层框架。我们有必要掌握其源码(最好之前阅读过Spring源码,更加容易掌握Mybatis源码)。
获取Mybatis源码
地址:https://github.com/mybatis/mybatis-3
我们可以直接把源码下载到本地,也可以用git命令。
拉取之后将这三个项目全部放在同一个目录下。
导入到IDEA中
然后挨个导入即可(过程比较简单,不必演示)。效果如图:
达到这种局面就行。
HSQLDB数据库简介
Mybatis中是采用HSQLDB的内存模式作为单元测试数据库。可以看一下。这玩意儿是纯纯的JAVA语言编写的数据库管理系统。
准备user.sql
drop table user if exists;
create table user (
id int generated by default as identity,
name varchar(50),
password varchar(50),
sex varchar(2),
create_time varchar(20),
primary key(id)
);
init.sql
insert into user(name ,password,sex,create_time)
values('zhangsan','123456','1','2022-08-28');
insert into user(name ,password,sex,create_time)
values('lisi','123456','0','2022-08-28');
引入依赖 hsqldb
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.10</version>
</dependency>
写一个Test01测试一下(添加两个依赖,不然懒加载会报错)
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.2.10</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.24.1-GA</version>
</dependency>
public class Test01 {
private Connection connection;
@Before
public void init(){
try {
System.out.println("开始初始化");
Class.forName("org.hsqldb.jdbcDriver");
connection = DriverManager.getConnection("jdbc:hsqldb:mem:mybatis","sa","");
ScriptRunner runner = new ScriptRunner(connection);
runner.setLogWriter(null);
runner.runScript(Resources.getResourceAsReader("usr.sql"));
runner.runScript(Resources.getResourceAsReader("init.sql"));
System.out.println("初始化结束");
}catch (Exception e){
System.out.println("报错了!卧槽!");
}
}
@Test
public void testQuery(){
if (connection == null){
System.out.println("加载出错!");
return;
}
SqlRunner sqlRunner = new SqlRunner(connection);
try {
List<Map<String, Object>> mapList = sqlRunner.selectAll("select * from user");
mapList.forEach(System.out::println);
}catch (Exception e){
System.out.println("执行时候出错");
}
}
}
执行结果如下:
{PASSWORD=123456, SEX=1, ID=0, CREATE_TIME=2022-08-28, NAME=zhangsan}
{PASSWORD=123456, SEX=0, ID=1, CREATE_TIME=2022-08-28, NAME=lisi}
这样就完成了。
我们不需要引入其他数据库去调试源码了。
结语
先开个头。把Mybatis源码下载下来,后面针对源码深入解析。
作为程序员,源码是必需品。