Mybatis架构设计及源码编译

一、简介

  MyBatis并不是一个完整的ORM框架,是一个半自动化的ORM框架,ORM是Object和Relation之间的映射,包括Object->Relation和Relation->Object两方面。Hibernate是个完整的ORM框架,而MyBatis完成的是Relation->Object,也就是其所说的data mapper framework。关于ORM的一些设计思路和细节可以参见Martin Flow《企业应用架构模式》一书中的ORM章节,MyBatis并不刻意于完成ORM(对象映射)的完整概念,而是旨在更简单、更方便地完成数据库操作功能,减轻开发人员的工作量,我想这对于应用系统来说也是最实用的,相信用Hibernate的都受过它的痛苦,而用过MyBatis的都会感觉它很简捷轻松。

二、架构设计

四大对象

StatementHandler:处理sql语句预编译,设置参数等相关工作
ParameterHandler:设置预编译参数用的
ResultHandler:处理结果集
Executor:它是一个执行器,真正进行java与数据库交互的对象

三、源码构建

1、先下载mybatis-parent项目:https://gitee.com/sglx666/mybatis-parent.git,编译构建

2、编译完mybatis-parent后,在同目录下下载mybatis源码:https://gitee.com/sglx666/mybatis-3.git

3、修改mybatis的pom文件,修改parent依赖

  <parent>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-parent</artifactId>
    <version>34-SNAPSHOT</version>
    <relativePath>../mybatis-parent/pom.xml</relativePath>
  </parent>

4、去除jdbc的连接器的scope属性

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.24</version>
<!--      <scope>test</scope>-->
    </dependency>

5、在源码main下新建自己的文件夹目录,并创建entity,mapper等,当然如果你是下载我上面的git项目,就已经存在了

6、新建resources目录,添加mybatis-config.xml,db.properties等配置文件

<?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>

  <properties resource="db.properties"></properties>

  <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>
<!--    <package name="com.ren.mybatis.mapper"/>-->
    <mapper resource="mapper/PetUserMapper.xml"/>
  </mappers>
</configuration>

7、新建测试类

public class App {

  public static void main(String[] args) {
    String resource = "mybatis-config.xml";
    Reader reader;
    try {
      reader = Resources.getResourceAsReader(resource);
      SqlSessionFactory sqlSessionFactory =
        new SqlSessionFactoryBuilder().build(reader);
      SqlSession sqlSession = sqlSessionFactory.openSession();
      PetUser petUser = (PetUser)sqlSession.selectOne("com.ren.mybatis.mapper.PetUserMapper.selectById","1");
      sqlSession.commit();
      System.out.println(petUser);
      sqlSession.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

源码的调试环境就构建好了。

 

posted @ 2022-09-14 10:09  上官兰夏  阅读(89)  评论(0)    收藏  举报