1. 工具准备
在开始使用idea自动生成crud代码之前,需要下载 idea 并且安装相关的插件,我这里使用的 idea 是社区版,所以本文的操作步骤完全可以复现,idea 和 插件的版本如下:
开发工具: IntelliJ IDEA 2022.2.2 (Community Edition)
插件列表:
- Database Navigator:是针对IntelliJ IDEA社区版用户的一个非常受欢迎的第三方数据库插件,使用此插件的目的是为了在idea中创建表,查看表的数据。
- MyBatisCodeGenerator:支持定制化生成 entity、mapper、mapperXml、service、serviceImpl、Controller 。
- MyBatisX:支持 Mapper 和 XML 来回跳转。
其他工具插件列表(提高开发效率):
-
POJO to JSON:支持转换 pojo 对象为 json 字符串。
-
Protocol Buffers:支持编辑 protocol buffers 文件。
-
GenerateAllSetter:一键调用一个对象的所有的set方法,get方法等,在方法上生成两个对象的转换。
-
GenerateSerialVersionUID:一键生成SerialVersionUID。
-
Spring Boot Assistant:支持自动补全 spring boot 的配置文件(application.yaml文件)。
-
Maven Helper:支持分析和排除 maven 依赖冲突。
关于生成 mybatis 代码的插件有很多,试用了下面几个免费的 mybatis 代码生成插件,根据个人的使用体验做出如下总结:
插件名称 | 生成文件 | 易用性(高、中、低) | 推荐等级(高、中、低) |
---|---|---|---|
MyBatis Builder | entity、mapper、mapperXml | 中 | 中 |
idea-mybatis-generator | entity、mapper、mapperXml | 中 | 低 |
MybatisHelperPro | entity、mapper、mapperXml | 中 | 低 |
MyBatisCodeGenerator | entity、mapper、mapperXml、service、serviceImpl、Controller | 高 | 高 |
2. docker安装mysql
步骤1:下载docker
可以直接下载 docker-desktop。
步骤2:创建自定义配置文件
首先,在你的主机上创建一个配置文件。例如,你可以创建一个名为my.cnf(或任何你喜欢的名字)的配置文件。这个文件可以放在你的主机上的任何位置,但是为了方便管理,最好将其放在专门的目录下。例如,创建一个目录mysql-config,然后在这个目录下创建my.cnf文件。
# 创建目录
mkdir mysql-config
# 进入创建的目录中
cd mysql-config
# 将自定义的内容写入 my.cnf 文件中,
# 如果命令行没有vim工具,可以使用cat命令将一段文本内容写入文件,如下所示
cat > my.cnf <<EOF
[mysqld]
# 自定义 MySQL 配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 允许任意远程主机尝试连接到MySQL服务器
bind-address=0.0.0.0
[client]
default-character-set=utf8mb4
EOF
bind-address=0.0.0.0
说明如下:
在MySQL的配置文件中,bind-address参数用于指定MySQL服务器绑定的网络地址。当你在配置文件中设置bind-address=0.0.0.0时,这意味着MySQL服务器将接受在其所有网络接口上的IPv4连接,包括公网和私网的地址。
默认情况下,MySQL服务器可能只监听本地回环接口(localhost,127.0.0.1),这限制了只有在MySQL服务器所在的本地机器上的应用程序才能连接到数据库。通过将bind-address设置为0.0.0.0,它允许任意远程主机尝试连接到MySQL服务器(当然,前提是远程主机的连接请求满足了其他的安全设置,如用户权限、防火墙规则、MySQL用户的host权限等)。
使用0.0.0.0作为bind-address可以提高灵活性,特别是在云和容器环境中,其中网络接口可能会发生变化。但要注意的是,这也可能带来安全风险,因为如果不进行适当的安全保护措施(例如,强密码策略、访问控制列表等),它将允许任意IP地址上的客户端尝试连接到你的MySQL服务器。
步骤3:拉取MySQL镜像
如果你还没有MySQL镜像,可以从Docker Hub拉取最新版的MySQL镜像:
docker pull mysql
步骤4:使用docker run
命令启动MySQL容器并挂载配置文件
接下来,使用docker run
命令启动一个新的MySQL容器实例,并使用-v
(或--volume
)参数来挂载你刚刚创建的配置文件到容器中适当的位置。
MySQL镜像默认读取/etc/mysql/conf.d
目录下的所有.cnf
文件作为额外的配置,所以你可以将主机上的配置文件挂载到这个目录下。
docker run -d \
--name my-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-v /path/to/mysql-config/my.cnf:/etc/mysql/conf.d/my.cnf \
mysql
请将/path/to/mysql-config/my.cnf
替换为你my.cnf
文件在主机上的实际路径,my-secret-pw
换为你想设置的MySQL root用户密码。
这些步骤将启动一个MySQL容器,MySQL会应用你在my.cnf
中指定的配置。
步骤5:验证配置
启动容器后,你可以登录到MySQL服务器来验证配置是否被正确应用。
- 进入MySQL容器的bash:
docker exec -it my-mysql bash
- 登录MySQL:
mysql -u root -p
然后输入你在启动容器时设置的密码。
- 一旦登录MySQL,你可以使用SQL命令检查配置:
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';
SHOW VARIABLES LIKE 'bind_address';
这些命令将显示character_set_server
、collation_server
和 bind_address
的设置,你应该能看到它们与你在my.cnf
中设置的值相匹配。
这样,你就成功地使用自定义配置文件启动了一个MySQL容器。
步骤6:创建数据库
可以使用下面的命令创建一个测试时使用的数据库:
# 创建数据库
create database my_test;
# 查看全部数据库
show databases;
3. 连接数据库
3.1. 安装 Database Navigator 插件
对于IntelliJ IDEA社区版(Community Edition),由于它没有内置的数据库工具,我们可以寻找第三方插件来帮助管理和操作数据库。一个广受欢迎的第三方数据库插件是 Database Navigator。
Database Navigator是针对IntelliJ IDEA社区版用户的一个非常受欢迎的第三方数据库插件,它提供了以下功能:
- 连接到流行的数据库,例如MySQL、PostgreSQL、SQLite等。
- 浏览数据库架构和对象,如表、视图、索引和存储过程。
- 执行SQL查询,并且具有基本的自动完成功能。
- 管理数据记录,能够执行插入、更新和删除操作。
- 导出和导入数据支持(比如使用SQL脚本或CSV文件)。
- 支持运行时间较长的数据库操作。
- 支持通过SSH隧道连接到数据库。
要安装 Database Navigator 插件,请按照以下步骤操作:
- 打开IntelliJ IDEA。
- 导航到 File | Settings | Plugins。
- 在插件菜单中,选择 Marketplace 标签页。
- 搜索 Database Navigator。
- 找到该插件,然后单击 Install 按钮。
安装完毕后,重启IDEA使插件生效,然后你就可以开始配置和使用Database Navigator插件来管理数据库了。
3.2. 使用 Database Navigator 插件
Database Navigator 插件安装完成后可以通过如下方式找到:
方式一: IntelliJ IDEA -> view -> Tool Windows -> DB Browser
方式二:在顶部导航栏找到 DB Navigator
点击 + 号新建 MySQL 的连接
填写数据库的 Host 以及用户名密码,并测试连接:
如果测试连接报错,通常有如下几种错误:
- 如果这里测试连接报错,请排查是否是用户名和密码错误。
- 如果账号没有权限,可以使用下面的命令给账号授权:
# 授权用户在特定数据库上执行任何操作
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
其中,database_name是数据库名,table_name是表名,username是用户名,host是用户连接的主机名。host可以是一个具体的主机名、IP地址,也可以是%表示任何主机。
记得每次修改权限后执行FLUSH PRIVILEGES;
命令使修改生效。
- 如果是连接错误,可以使用下面的命令排查是否配置了
bind-address=0.0.0.0
(允许外部网络访问):
SHOW VARIABLES LIKE 'bind_address';
这里测试连接数据库成功:
打开 SQL 控制面板,执行建表语句,创建表:
在 SQL 控制面板中使用如下命令创建表:
CREATE TABLE `templates` (
`template_code` VARCHAR(255) NOT NULL comment '模版code',
`template_name` VARCHAR(255) NOT NULL comment '模版名称',
`template_content` TEXT NOT NULL comment '模版内容',
`template_status` VARCHAR(32) NOT NULL comment '模版状态',
`template_version` INT NOT NULL comment '模版版本号',
`comment` TEXT comment '模版备注',
PRIMARY KEY (`template_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4. 生成CRUD代码
4.1. 初始化项目
使用 spring boot initializr 初始化一个spring boot项目,如下图所示:
使用的 spring boot 项目说明如下:
- 项目基本结构:MVC
- 项目框架:spring boot + mybatis
在 com.example.springmybatis 目录下新建四个目录,分别是 controller、dao、entity、service。
- controller层:负责接收http请求控制。
- entity层:用于存放实体类,与数据库中的属性值基本保持一致,实现set和get的方法。
- dao层:用于存放mapper接口,做数据持久层的工作,负责与数据库联络,封装了增删改查基本操作。
- service层:主要负责业务模块的逻辑应用设计,会调用 dao 层的接口。
4.2. 生成CRUD代码
使用 MyBatisCodeGenerator 插件也可以自动生成 controller、dao、entity、service这几个目录。
安装好插件后,可以在idea顶部导航栏 Tools -> MyBatisCodeGenerator 找到插件,如下图:
需要配置生成文件的路径,如下图所示:
会自动生成controller、dao、entity、service这几个目录(如果是多模块项目,可以选择生成到对应的模块中),如下图所示:
4.3. springboot集成mybatis
springboot 集成 mybatis 可以直接使用 mybatis-spring-boot-starter
这个依赖包,mybatis-spring-boot-starter
是一个由 MyBatis 官方提供的库,用于在 Spring Boot 应用中集成 MyBatis。使用这个 starter 可以方便地将 MyBatis 配置成为你的 Spring Boot 应用的一部分,避免了复杂的配置。它自动配置了 MyBatis 的基本组件,并提供了一套默认的设置,可以被覆盖和自定义。
mybatis-spring-boot-starter
提供了以下功能:
- 自动配置
SqlSessionFactory
和SqlSessionTemplate
。 - 自动扫描 MyBatis 的映射器(
Mapper
)接口,并将其注册到 Spring 上下文中。 - 提供自定义配置的能力,例如数据源和事务管理。
- 减少显式配置的需要;依托 Spring Boot 的自动配置机制,简化了整合过程。
4.3.1. 使用方法
以下是如何在基于 Maven 的 Spring Boot 应用中添加和使用 mybatis-spring-boot-starter
的步骤:
- 添加依赖
在你的项目的pom.xml
文件中添加mybatis-spring-boot-starter
的依赖:
<dependencies>
<!-- 其他依赖 ... -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
注意:版本号 3.0.3
只是一个示例,你应使用最新稳定版本。
如果使用底层数据库是mysql,还需要添加 mysql-connector-java
这个依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
mysql-connector-java 是 MySQL 官方提供的 JDBC 驱动,用于 Java 应用程序与 MySQL 数据库服务器之间的通信。这个库实现了 JDBC(Java数据库连接)API,为 Java 应用程序提供了一种以统一的方式与 MySQL 数据库进行交互的手段。
- 配置数据源
在application.properties
或application.yaml
中配置你的数据库信息。例如,如果你使用的是 mysql 数据库,在application.yaml
中配置如下:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/my_test?useSSL=false&serverTimezone=UTC
username: root
password: my-secret-pw
driver-class-name: com.mysql.cj.jdbc.Driver
- 创建 MyBatis Mapper 接口和 XML 映射文件
创建 MyBatis 的 Mapper 接口,并为它们创建相应的 XML 映射文件。例如,你可能有一个UserMapper
接口和一个与之对应的UserMapper.xml
映射文件。
// UserMapper.java
@Mapper
public interface UserMapper {
User selectUserById(int id);
}
- 配置 MyBatis Mapper 扫描路径
默认情况下,mybatis-spring-boot-starter
会扫描你的应用的所有路径以查找标记有@Mapper
注解的接口。但是,你可以在application.properties
或application.yaml
中显式指定扫描路径:
mybatis:
# 扫描实体类的位置,在此处指明扫描实体类的包,在 mapper.xml 中就可以不写实体类的全路径名
type-aliases-package: com.example.springmybatis.entity
#指定 mapper.xml 的位置
mapper-locations:
- classpath:mapper/*.xml
- 运行 Spring Boot 应用
配置完成后,就可以运行你的 Spring Boot 应用了。mybatis-spring-boot-starter
将自动配置 MyBatis,并将你的 Mapper 接口注册为 Spring Beans,因此你可以像使用其他 Spring Beans 一样注入并使用它们。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
通过上述步骤,你可以轻松地集成 MyBatis 到你的 Spring Boot 应用中,并开始利用 MyBatis 优雅地访问数据库。