Mybatis源碼分析(一) | 如何調試Mybatis源碼

準備

  1. mybatis-3 Github源碼地址
  2. mybatis 官方指導文檔

須知

  1. 此次閱讀的 mybatis 源碼版本爲 3.5.3
  2. 官方下載的源碼無法直接使用,pom文件做了改動,註釋了部分依賴,也修改了一些依賴的版本,作爲學習,只需保證編譯運行調試通過即可。
  3. 增加了測試代碼,即可運行調試。

工程結構

在這裏插入圖片描述

調試

主入口

public class Main {

    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            User user = sqlSession.selectOne("com.mybatis.read.UserDao.selectUser", 1);
        } finally {
            sqlSession.close();
        }
    }
}

mybatis-config 配置文件

<?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>
    <!--configuration下的標籤有順序-->
    <properties resource = "config.properties"/>
    <settings>
        <!-- 設置日誌打印-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>
</configuration>

數據庫配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mybatis.read.UserDao">
    <select id="selectUser" resultType="com.mybatis.read.User">
        SELECT * FROM User where id = #{id}
    </select>
</mapper>

User實體類

public class User {
    private String name;
    private String age;
    private String des;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }
}

UserDao

public interface UserDao {
    User selectUser(Long id);
}

createSQL

CREATE TABLE `user` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `age` int(32) DEFAULT NULL,
  `des` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

啓動

啓動main方法,運行測試,打上斷點後即可啓動DEBUG模式調試。
在這裏插入圖片描述調試的源碼已上傳到github,mybatis源碼閱讀,需要的話自行下載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章