
ps:你...不会就是诡计多端的吴工吧? 如果恰好是,也没事。
看完这一篇,学习只有先知和后知,你看完学会了知道了,就行。
根据数据库的表 自动生成 代码:
不多说,开始实战演练。
先看下我们三步之后做了些啥,工程目录结构 :
每个红色框就是一步, 三个框,足矣。

开始开始
前提
准备好数据库、表(需要生成实体类、mapper的表):
这是演示实战,就整2张表意思一下:

表my_account

表my_user

-
-
-
-
org.mybatis.generator -
mybatis-generator-core -
1.3.7 -
-
-
org.mybatis.spring.boot -
mybatis-spring-boot-starter -
2.2.2 -
-
-
mysql -
mysql-connector-java -
runtime -
-
-
org.springframework.boot -
spring-boot-starter-test -
test -
-

配置文件一 ,用于生成代码时连接数据库拿表数据的。
generator.properties :
- jdbc.driverClass=com.mysql.cj.jdbc.Driver
- jdbc.connectionURL=jdbc:mysql://localhost:3306/my_test_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
- jdbc.userId=root
- jdbc.password=123456
配置文件二 ,用于生成代码时 指定生成的 目录路径、代码函数等。
generatorConfig.xml :
- "1.0" encoding="UTF-8"?>
- PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
-
-
"generator.properties"/> -
id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat"> -
"beginningDelimiter" value="`"/> -
"endingDelimiter" value="`"/> -
"javaFileEncoding" value="UTF-8"/> -
-
type="org.mybatis.generator.plugins.SerializablePlugin"/> -
-
type="org.mybatis.generator.plugins.ToStringPlugin"/> -
-
type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" /> -
-
type="com.demo.mybatisgen.util.CommentGenerator"> -
-
"suppressAllComments" value="true"/> -
"suppressDate" value="true"/> -
"addRemarkComments" value="true"/> -
-
-
"${jdbc.driverClass}" - connectionURL="${jdbc.connectionURL}"
- userId="${jdbc.userId}"
- password="${jdbc.password}">
-
-
"nullCatalogMeansCurrent" value="true" /> -
-
-
"com.demo.mybatisgen.model" targetProject="src\main\java"/> -
-
"mybatis.mapper" targetProject="src\main\resources"/> -
-
type="XMLMAPPER" targetPackage="com.demo.mybatisgen.mapper" - targetProject="src\main\java"/>
-
-
"%" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"- enableSelectByExample="false" selectByExampleQueryId="false">
-
-
"useActualColumnNames" value="false"/> -
"constructorBased" value="false"/> -
"id" sqlStatement="JDBC" identity="true"/> -
-
-
这个是使用备注添加器(第三步的内容):

第三步 创建代码生成器 Generator

CommentGenerator.java:
- import org.mybatis.generator.api.IntrospectedColumn;
- import org.mybatis.generator.api.IntrospectedTable;
- import org.mybatis.generator.api.dom.java.Field;
- import org.mybatis.generator.internal.DefaultCommentGenerator;
- import org.mybatis.generator.internal.util.StringUtility;
-
- import java.util.Properties;
-
-
- /**
- * @Author: JCccc
- * @Date: 2022-7-13 10:09
- * @Description: 注释添加
- */
- public class CommentGenerator extends DefaultCommentGenerator {
- private boolean addRemarkComments = false;
-
- /**
- * 设置用户配置的参数
- */
- @Override
- public void addConfigurationProperties(Properties properties) {
- super.addConfigurationProperties(properties);
- this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
- }
-
- /**
- * 给字段添加注释
- */
- @Override
- public void addFieldComment(Field field, IntrospectedTable introspectedTable,
- IntrospectedColumn introspectedColumn) {
- String remarks = introspectedColumn.getRemarks();
- //根据参数和备注信息判断是否添加备注信息
- if (addRemarkComments && StringUtility.stringHasValue(remarks)) {
- addFieldJavaDoc(field, remarks);
- }
- }
-
- /**
- * 给model的字段添加注释
- */
- private void addFieldJavaDoc(Field field, String remarks) {
- //文档注释开始
- field.addJavaDocLine("/**");
- //获取数据库字段的备注信息
- String[] remarkLines = remarks.split(System.getProperty("line.separator"));
- for (String remarkLine : remarkLines) {
- field.addJavaDocLine(" * " + remarkLine);
- }
- addJavadocTag(field, false);
- field.addJavaDocLine(" */");
- }
-
- }
Generator.java :
- 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;
-
- /**
- * @Author: JCccc
- * @Date: 2022-7-13 10:09
- * @Description: 点它
- */
- public class Generator {
- public static void main(String[] args) throws Exception {
- //MBG 执行过程中的警告信息
- List
warnings = new ArrayList(); - //当生成的代码重复时,覆盖原代码
- boolean overwrite = true;
- //读取我们的 MBG 配置文件
- InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
- ConfigurationParser cp = new ConfigurationParser(warnings);
- Configuration config = cp.parseConfiguration(is);
- is.close();
-
- DefaultShellCallback callback = new DefaultShellCallback(overwrite);
- //创建 MBG
- MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
- //执行生成代码
- myBatisGenerator.generate(null);
- //输出警告信息
- for (String warning : warnings) {
- System.out.println(warning);
- }
- }
- }
好了,三步都完事了,再多一步当我输。

然后点击一下代码生成器Generator 的 main方法:

可以看到代码生成了:

生成代码的路径就是 generatorConfig.xml 配置的:

看看实体:

看看interface mapper(大部分单表的增删改查函数都生成了):

再看看mapper.xml (都有都有):

复制粘贴,三步完成,我看看以后谁还不会!
该篇就到这吧。