目的:为了更好的使用 springboot
业务:实现用户单表的增删改查。
本编内容(上)模块介绍:环境准备、后台数据准备、搭建项目并使用mybatis插件反向生成代码
一、环境准备
开发工具:idea 2020.2 + 一杯枸杞
数据库:mysql 5.7(可视化工具 navicat,可选)
技术:jdk8 + maven 3.6.3
二、后台数据准备
在 navicat 中选择一个数据库执行下面sql(我创建的数据库名字为 shop)
CREATE TABLE `user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户序号',
`userName` varchar(255) DEFAULT NULL COMMENT '用户名',
`userPwd` varchar(255) DEFAULT NULL COMMENT '用户密码',
`sex` char(255) DEFAULT NULL COMMENT '用户性别',
`age` tinyint(3) unsigned DEFAULT NULL COMMENT '用户年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES (1, '张三', '123', '男', 18);
INSERT INTO `user` VALUES (2, '特某普', '666', '男', 70);
INSERT INTO `user` VALUES (3, '拜登', '555', '男', 74);
INSERT INTO `user` VALUES (4, '凯莉·詹娜', '222', '女', 23);
三、正式编写CURD功能前的项目准备
1、创建基本项目,配置 maven 仓库,pom.xml,和 application.yml
1) File → New → Project ,如下
点击 Next:
后面都是 Next,直接 finish。
2) 别忘了配置自己项目所需要的 maven 本地仓库位置。
maven 如何配置,请参考: maven下载及与eclipse、idea的集成
如果是创建完项目又配置的 maven,别忘了在更改完 maven 后,重新刷新一下。
3) 配置 pom.xml
将下面代码直接覆盖掉原来的 dependencies 标签部分即可
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<!--健康监控功能-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<!--Mysql DB 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
4) 将 application.properties 修改为 application.yml,加入如下代码
server:
port: 8080
spring:
# 配置数据源信息
datasource:
url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
mybatis:
# 配置 mapper 文件映射
mapper-locations:
- classpath:mapper/*.xml
2、搭建项目架构,并使用 mybatis 插件反向生成 dto 、mapper 接口及对应配置文件
1) 搭建项目架构
至少 controller 层、service(impl) 层、dao 层得有把:
2) mybatis 插件生成 bean、mapper 接口及对应文件
①、 将下面两个文件放到 resource 下
——gen.properties(给 genConfig.xml 提供数据库信息)
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=123456
——genConfig.xml (提供插件生成代码的配置)
<?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="generator.properties"/>
<context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 生成序列化方法-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- 生成toString方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<commentGenerator>
<!-- mybatis生成的注释会让你不爽,你可以使用下面一行去掉 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--配置数据库选项-->
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<!--指定生成模型数据的路径-->
<javaModelGenerator targetPackage="com.example.shop.dto" targetProject="src/main/java"/>
<!--指定生成mapper.xml的路径-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
<!--指定生成mapper接口的路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.shop.dao"
targetProject="src/main/java"/>
<!--生成全部表tableName设为%-->
<table tableName="user">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
②、 将生成代码类 Generator.java 添加至 genutil 包下
——Generator,java
package com.example.shop.genutil;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Generator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true; //当生成的代码重复时,覆盖原代码
InputStream is = Generator.class.getResourceAsStream("/genConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(is);
is.close();
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
//执行生成代码
myBatisGenerator.generate(null);
//输出警告信息
for (String warning : warnings) {
System.out.println(warning);
}
}
}
③、 直接运行 Generator 类的 main 方法,可以兴奋的看到生成的文件
到此为止,正式编写 CURD 功能前的热身工作完成了,另一个工具派上用场了,喝几口泡的枸杞茶,赶紧补补。