MyBatis - 1 - 源码学习序篇

98 阅读3分钟

Mybatis简介

Mybatis是一个面向对象开源的ORM框架,其很大层度简化了后台技术人员操作数据库的难度,简化了数据库数据与java对象的映射,以及接口与数据库SQL之间的映射关联;其配置简洁,SQL可自定义且易于优化SQL。

选择Mybatis

  1. 源码学习是很多做技术的同学进阶打磨个人知识广度与深度的有效方式之一;
  2. 开源社区Github上有非常多且优秀的开源项目,时间且精力有限。所以选择合适个人当前发展需要的开源项目尤为重要,选择开源项目应该依据当前个人发展需要,个人兴趣,以及项目应用普及度与代码好评度等;
  3. Mybatis作为前些年应用比较广泛且优秀的ORM开源框架,大大简化了后台系统对于数据库操作的难度;
  4. Mybatis总体代码量适中,易搭建本地环境与Debug.

环境准备

工具准备

本地安装JDK,MySQLServer,MySQL可视化工具,IDEA Intellij.

导入myatis源码

STEP 1 : 打开IDEA Intellij

STEP 2 : File -> New -> Project from Version Control -> Git(Or Github)

STEP 3 : 填入myatis远程repository地址(github.com/mybatis/myb…), 设置本地项目存储位置

本地Debug

使用IDEA Intellij,新建一个Spring boot的maven项目,项目中引入mybatis,并在DB中初始化table与一些数据。

准备数据

在Mysql server中初始化table,并初始化一些数据。

建表

DROP TABLE IF EXISTS `task`;
CREATE TABLE `task` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `userId` int(11) NOT NULL,
 `taskName` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) NOT NULL,
 `email` varchar(255) DEFAULT NULL,
 `age` int(11) DEFAULT NULL,
 `sex` int(255) DEFAULT NULL,
 `schoolName` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

初始化数据

// Data for task
INSERT INTO `task` VALUES ('1', '1', 'task1');
INSERT INTO `task` VALUES ('2', '1', 'task2');
INSERT INTO `task` VALUES ('3', '2', 'task3');
INSERT INTO `task` VALUES ('4', '3', 'task4');
INSERT INTO `task` VALUES ('5', '2', 'task5');
INSERT INTO `task` VALUES ('6', '3', 'task6');
INSERT INTO `task` VALUES ('7', '4', 'task7');

// Data for user
INSERT INTO `user` VALUES ('1', 'user1', 'user1@sample.com', '18', '0', 'Sunny School');
INSERT INTO `user` VALUES ('2', 'user2', 'user2@sample.com', '15', '1', 'Garden School');
INSERT INTO `user` VALUES ('3', 'user3', 'user3@sample.com', '25', '0', 'Sunny School');
INSERT INTO `user` VALUES ('4', 'user4', 'user4@sample.com', '16', '0', 'Garden School');
INSERT INTO `user` VALUES ('5', 'user5', 'user5@sample.com', '27', '0', 'Sunny School');
INSERT INTO `user` VALUES ('6', 'user6', 'user6@sample.com', '14', '1', 'Garden School');
INSERT INTO `user` VALUES ('7', 'user7', 'user7@sample.com', '9', '0', 'Sunny School');
新建项目
  • 新建spring boot项目
  按照spring官方的文档,创建spring-boot项目 : https://spring.io/guides/gs/spring-boot
  • 使用Mybatis
  本文以及后续mybatis系列使用的spring-mybatis项目,采用的都是maven进行包的依赖管理。在项目中引入mybatis:
  <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  • 配置DB
方式1:使用application.properties配置DB的连接信息:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testDbName?serverTimezone=UTC
spring.datasource.username=testUserName   
spring.datasource.password=testPassword

方式2:使用mybatis-config.xml配置DB的连接信息:
<dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/testDbName?serverTimezone=UTC"/>
    <property name="username" value="testUserName"/>
    <property name="password" value="testPassword"/>
</dataSource>

本地Debug
  1. 从github上导入mybatis到本地,但是不能直接运行,不便于debug, 但是mybatis中有大量丰富的unit test,所以可以通过跑本地unit test进行源码debug;
  2. 本地新建里spring-boot项目,并引入了mybatis,初始化了数据,本地运行项目。成功启动后,就可以debug项目代码,将依赖包mybatis的源码拉到本地,就可以在debug项目代码时,debug进依赖包源码。

内如错误与丰富度,会在后续持续学习中更正与补充