mybatis源碼閱讀筆記-開篇
前言
背景
為了更好的理解mybatis的原理,花點時間了解一下它的內部過程。
分析的內容
主要分析如下四大內容:
1、分析Mybatis是怎麽解析配置文件。
2、分析Mybatis是如何執行Sql並映射結果。
3、分析Mybatis是如何使用緩存的。
4、分析mybatis的插件的實現原理。
第一章:搭建源碼的調試環境
環境準備
1、mybatis調試項目建立
在spring 集成開發工具STS中新建一個簡單的maven項目,在項目中引入mybatis的依賴包和mysql的驅動包。
為了保證項目中把源代碼下載下來,在STS中,需要對maven進行以下的相關配置。
2、調試支撐數據庫建立
在mysql中新建一個測試的數據庫lookmybatis和測試的數據表user。
對應的創建數據表的sql語句
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`gender` int(11) NOT NULL,
`mobile` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、項目工程代碼整合
在項目工程中新建user的實體類,對應於數據庫的user表
User.java 的源代碼
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private String password;
private String name;
private String gender;
private String mobile;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", name=" + name + ", gender="
+ gender + ", mobile=" + mobile + ", toString()=" + super.toString() + "]";
}
}
從官方網站上(http://www.mybatis.org/mybatis-3/zh/getting-started.html)獲取一個基礎的mybatis配置文件,放置到項目的根目錄下。比如命名為:mybatis-config.xml,修改其中的數據庫連接信息和mybatis的映射文件。
mybatis-config.xml 的完整內容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/lookmybatis?serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/user.xml"/>
</mappers>
</configuration>
新建需要測試的sql映射文件,項目中放置在了項目根目錄下的mapper的文件夾下的user.xml。
在項目中的main方法中編寫測試代碼,測試環境是否ok
在lookmybatis數據庫的user表中插入一條id為1的記錄。
如果沒有什麽問題的話,將在控制臺中打印出查詢的記錄信息。
看到上述界面,表示基礎的mybatis運行環境搭建完畢。
mybatis源碼閱讀筆記-開篇