【MyBtais源码阅读】(一)从头开始

        在开始阅读MyBatis 源码之前,我们先阅读一下MyBatis官网文档,从头开始使用一下这个框架,这是MyBatis 官方文档链接https://mybatis.org/mybatis-3/zh/getting-started.html

        。。。。。。阅读中。。。。。。

        在阅读文档后,我们发现在MyBatis中有几个比较重要对象,他们分别是

        1、Configuration:MyBatis中对应的配置对象,整个应用程序只包含一个Configuration对象。

        2、SqlSessionFactoryBuilder:SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory,一旦创建了 SqlSessionFactory,就不再需要它了。

        3、SqlSessionFactory:一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。我们可以从中获取SqlSession实例。

        4、SqlSession:提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的。

        在大致了解上述对象的作用后,我们按照文档创建了一个MyBatis的项目,代码如下

1:配置pom.xml

  <dependencies>
    <!--  mybatis依赖  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>
    <!--  mysql 驱动  -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.39</version>
    </dependency>
  </dependencies>

 2:配置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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://xxxxxxx:3306/demo"/>
                <property name="username" value="root"/>
                <property name="password" value="xxxxxxx"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="./mappers/JobMapper.xml"/>
    </mappers>
</configuration>

3:配置Mapper.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="org.example.dao.JobMapper">
    <select id="selectJob" resultType="org.example.entity.Job">
        select * from job where id = #{id}
    </select>
</mapper>

4:添加对应实体和测试代码

public class Job {

    private Integer id;

    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Job{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
public class Demo {
    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();
        Job job = (Job)sqlSession.selectOne("org.example.dao.JobMapper.selectJob", 1);
        System.out.println(job.toString());
    }


}

 5:运行输出结果和数据库数据

    

         经过上述测试代码,能够正常运行,并且把id=1的数据从数据库查询出来,但是现在有一个疑问,mybatis 是如何运行的,其内部机制到底是怎样的呢?我们带着这个疑问,从测试代码中进行层层调试,一步一步跟进。。。

下一篇

【个人阅读源码,能力有限,望各方大佬有幸瞧见后能指点一二,如果有错误之处,我看到后会立马改正,谢谢🙏🙏🙏】

阿里云服务器优惠卷

阿里云优惠卷

阿里云新用户优惠

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值