文章目录
  1. 1 概述
    1. 1.1 两个工具
    2. 1.2 准备数据库 mybatis/database.sql
  2. 2 Mybatis Generator 生成
    1. 2.1 配置 config/application-local.properties
    2. 2.2 配置 mybatis/generator.xml
    3. 2.3 配置 pom.xml
    4. 2.4 生成 mybatis/generate.cmd
    5. 2.5 生成结果
    6. 2.6 更多生成方式
  3. 3 Mybatis Starter 整合
    1. 3.1 配置 pom.xml
    2. 3.2 配置 config/application.properties
    3. 3.3 配置 BeyondSecurityApplication.java
    4. 3.4 操作数据库

SpringBoot 是快速开发 Spring 项目的流行框架,而 MyBatis 是 Spring 中数据库操作的流行方案。本文以 MySQL 为例,总结了 SpringBoot 项目中借助 MyBatis Generator 的生成实体类和Mapper,并使用它们操作数据库的开发要点。

作者:王克锋
出处:https://kefeng.wang/2018/03/15/spring-boot-mybatis/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1 概述

1.1 两个工具

  • mybatis-generator-maven-plugin: 自动生成数据表的 entity/mapper,用于 Java 代码中操作数据库;
  • mybatis-spring-boot-starter: 简化 MyBatis 整合,快速实现数据库操作。

1.2 准备数据库 mybatis/database.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DROP DATABASE IF EXISTS cloudauth;
CREATE DATABASE cloudauth CHARACTER SET utf8;
USE cloudauth;

DROP TABLE IF EXISTS auth_users;
CREATE TABLE auth_users
(
id INT AUTO_INCREMENT COMMENT '用户ID',
name VARCHAR(16) COMMENT '用户名称',
passwd VARCHAR(16) COMMENT '登录密码',
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生成时间',
updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY(id), UNIQUE KEY(name)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8 COMMENT='AUTH_用户表';

2 Mybatis Generator 生成

2.1 配置 config/application-local.properties

  • 配置 MySQL 的连接参数,同时用于 Mybatis Generator/Starter;
  • 配置生成的类所在的父 package(xxxEntity.java / xxxMapper.java 分别在其下 entity/mapper 子目录中)。
1
2
3
4
5
## MySQL
spring.datasource.username=root
spring.datasource.password=root123
spring.datasource.url=jdbc:mysql://192.168.9.24:3306/cloudauth?useUnicode=true&characterEncoding=utf8&useSSL=false
mybatis.generator.base-package=wang.kefeng.cloud.security

2.2 配置 mybatis/generator.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
<properties resource="config/application-local.properties"/>

<context id="MySQLTables" targetRuntime="MyBatis3" defaultModelType="flat">
<!-- 注意:不要使用自带的 RowBoundsPlugin 插件,它是全量提取后在应用中分页,性能差 -->
<!-- 【1】仅包含分页功能的插件: https://github.com/wucao/mybatis-generator-limit-plugin -->
<!-- 【2】仅包含批量插入的插件(未接入成功): https://github.com/wen866595/MyBatis-batch -->
<!-- 【3】全功能插件(要求 Java8+): https://github.com/itfsw/mybatis-generator-plugin -->
<!-- 【4】全功能插件(最佳): https://github.com/oceanc/mybatis3-generator-plugins -->