Mybatis源码分析(一):Mybatis执行流程

一、Mybatis使用示例

我们先先一个简单的例子,对Mybatis使用有一个直观的认识。

1.新建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>
    <!-- 环境,可以配置多个,default:指定采用哪个环境 -->
    <environments default="test">
        <!-- id:唯一标识 -->
        <environment id="test">
            <!-- 事务管理器,JDBC类型的事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 数据源,池类型的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://xxx/testdb" />
                <property name="username" value="xxx" />
                <property name="password" value="xxx" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml" />
    </mappers>
</configuration>

2.生成model文件User.java和配置文件UserMapper.xml

package last.soul.model;

import lombok.Data;
@Data
public class User {
    private Long id;
    private String name;
    private String nickName;
    private Integer age;
    private Byte sex;
}
<?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="last.soul.mapper.UserMapper">
  <resultMap id="BaseResultMap" type="last.soul.model.User">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="nick_name" jdbcType="VARCHAR" property="nickName" />
    <result column="age" jdbcType="INTEGER" property="age" />
    <result column="sex" jdbcType="TINYINT" property="sex" />
  </resultMap>

  <select id="selectById" parameterType="java.util.Map" resultType="last.soul.model.User">
      select * from user where id = #{id}
   </select>
</mapper>

3.编写测试代码UserTest.java

public class UserTest {
    @Test
    public void test() throws IOException {
        String resource = "file/mybatis-config.xml";
        // 读取配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 构建sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //构建参数
        Map map=new HashMap<>();
        map.put("id",1);
        //执行sql,并返回结果
        User user=sqlSession.selectOne("last.soul.mapper.UserMapper.selectById",map);
        Assert.assertTrue(user.getId()==1);
    }
}

运行成功,由上面代码看出,Mybatis执行流程主要有以下几步:

1.读取配置文件。

2.构建sqlSessionFactory。

3.获取sqlSession。

4.执行sql,并返回结果。

二、Mybatis整体架构

Mybatis源码分析(一):Mybatis执行流程

Mybatis整体架构分三层,分别是基础支持层、核心处理层和接口层。上面的第1步属于基础支持层的资源加载模块,第2,3步属于接口层,第4步属于核心处理层。

后续的文章会详解每个模块。

原文 

https://segmentfault.com/a/1190000023210896

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Mybatis源码分析(一):Mybatis执行流程

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址