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>

mysql配置文件

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源码阅读,需要的话自行下载。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我家有许多多的鲤鱼,而且他们是会跳龙门那种,这不前天中午我看见了一条鱼在水沟里,于是我就,把它放进了鱼池,可是...
    龙族阅读 267评论 0 1
  • 暂定名字叫《天问》 于西海之戌地,北海之亥地,去岸十三万里,有一大山。其高三万六千里,周有弱水绕匝。山东南...
    叶尘尘阅读 314评论 0 0
  • ﹉ 我的青椒之旅 2017年九月我怀着一种渴望和期盼加...
    渑池1021赵焕阅读 140评论 0 2
  • Exception和Error都是继承自Throwable类,java中只有Throwable类型实例才可能被抛出...
    杨殿生阅读 131评论 0 0