mybatis 作为数据的 ORM 框架,在国内的应用市场还是非常可观的,当初刚开始工作时使用 spring + mybatis 进行开发,后来也使用过 hibernate, jdbctemplate, jooq,mybatisplus 等其他的一些框架,
就个人使用感触来讲 jooq 的使用姿势和写 sql 差不多,基本上可以会写 sql 的无需额外的培训,立马可以上手;
hibernate 最大的特点就是借助方法名来映射 sql 语句,非常有特点,但是当查询条件复杂一些的话,对小白而言就没有那么友好了;
而 jdbctemplate,这个在小项目,轻量的 db 操作中,用起来还是很爽的,非常灵活,但是也有一些点需要特别注意,比如 queryForObject,查不到数据时抛异常而不是返回 null;
至于 mybatis 以及衍生的 mybatis-plus,也就是接下来的主角了,它的特点如何,为什么受到国内大量开发者的追捧,将它作为 db 操作的第一 ORM 框架,让我们看完之后再说
I. 基础环境搭建
接下来的 Mybatis 的项目演示,主要是在 SpringBoot 的环境下运行,底层的数据库采用 MySql,对应的版本信息如下
- springboot: 2.2.0.RELEASE
- mysql: 5.7.22
1. SpringBoot 项目配置
关于 SpringBoot 的项目创建过程省略,下面是核心的 pom 依赖
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
核心的依赖mybatis-spring-boot-starter
,至于版本选择,到 mvn 仓库中,找最新的
另外一个不可获取的就是 db 配置信息,appliaction.yml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/story?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:
2. 数据库准备
在本地数据库中,新增了一个表如下
CREATE TABLE `money` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
`money` int(26) NOT NULL DEFAULT '0' COMMENT '钱',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=551 DEFAULT CHARSET=utf8mb4;
接下来本文涉及到的 CURD 都是针对这张表来说的
II. MyBatis CURD
接下来我们将从 0 到 1,实现基于 mybatis 进行 mysql 操作的全流程