由于使用数据表时,我们需要给每一个表都创建对应的实体类,每个实体类都有对应的Mapper接口和Mapper.xml文件,这些其实都是一些重复的工作,我们可以通过第三方工具来完成。
全网搜索了一下,相关的工具软件:
Spring-generator是基于javafx8开发的图形界面Spring代码生成器,使用 Apache FreeMarker作为代码文件的模板,用户可以一键将数据库中的表生成为任意风格的.java代码文件(比如经典的三层模型);Spring-generator默认生成MyBatis的Dao,XML并配有MyBatis的查询帮助工具Assist,但是Spring-generator并不局限于生成Spring与MyBatis等,它的使命是将数据库中表的属性提取为实体类属性,剩下的事情就取决你如何使用FreeMarker操作它
官网地址:https://mirren.gitee.io/spring-generator-doc/

软件存放在目录mall_day1\Spring-generator-1.0.9安装包下:

通过 java -jar Spring-Generator.jar 执行即可


mybatis-generator-gui是基于 mybatis generator 开发一款界面工具, 本工具可以使你非常容易及快速生成Mybatis的Java POJO文件及数据库Mapping文件。
github地址:https://github.com/zouzg/mybatis-generator-gui

除了使用工具外,其实我们可以在项目中加入相关依赖,自己构建一个Mybatis的生成器,下面的操作是在SpringBoot项目中构建代码生成器,启动过程未使用Mybatis的Maven插件(
在官网中对应with Maven)而是原生Java代码(在官网中对应with Java),对于Mybatis插件你可以通过这篇博文进行学习Mybatis的逆向工程(原理+详细操作)或者通过【尚硅谷】2022版MyBatis零基础入门教程(细致全面,快速上手)的P62-64节进行学习。
MyBatis Generator官方地址:http://mybatis.org/generator/running/runningWithMaven.html


创建一个SpringBoot项目,项目结构如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.0version>
<relativePath/>
parent>
<groupId>com.dudugroupId>
<artifactId>mall_day1artifactId>
<version>0.0.1-SNAPSHOTversion>
<name>mall_day1name>
<description>Demo project for Spring Bootdescription>
<properties>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-aopartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelper-spring-boot-starterartifactId>
<version>1.4.2version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.2.9version>
dependency>
<dependency>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-coreartifactId>
<version>1.4.1version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.29version>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
application.yaml和generator.properties中将数据库的配置修改成你的配置即可,并且在generatorConfig.xml中可以根据自己的需求进行配置,如相关model和mapper生成路径,
指定生成数据库中的某张表,
指定生成数据库中的所有表 和
targetRuntime=Mybatis3Simple表示生成基本的CRUD(清晰简洁版本) targetRuntime=Mybatis3表示生成带条件的CRUD(奢华尊享版)这是使用的比较多的二种方式,至于配置更多详细信息请查询官方文档:http://mybatis.org/generator/configreference/xmlconfig.html
- application.yaml
server: port: 8088 spring: datasource: url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root mybatis: mapper-locations: - classpath:mapper/*.xml - classpath*:com/**/mapper/*.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- generator.properties mysql的配置文件
jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc.userId=root jdbc.password=root
- 1
- 2
- 3
- 4
- generatorConfig.xml 生成器配置文件
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"/> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/> <commentGenerator type="com.dudu.mall_day1.mbg.CommentGenerator"> <property name="suppressAllComments" value="true"/> <property name="suppressDate" value="true"/> <property name="addRemarkComments" value="true"/> commentGenerator> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.userId}" password="${jdbc.password}"> <property name="nullCatalogMeansCurrent" value="true" /> jdbcConnection> <javaModelGenerator targetPackage="com.dudu.mall_day1.mbg.model" targetProject=".\src\main\java"/> <sqlMapGenerator targetPackage="com.dudu.mall_day1.mbg.mapper" targetProject=".\src\main\resources"/> <javaClientGenerator type="XMLMAPPER" targetPackage="com.dudu.mall_day1.mbg.mapper" targetProject=".\src\main\java"/> <table tableName="ums_admin"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> table> context> generatorConfiguration>
- 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
(4) mgb
- CommentGenerator.java 自定义注释生成器
package com.dudu.mall_day1.mbg; 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; /** * 自定义注释生成器 * Created by macro on 2018/4/26. */ 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(" */"); } }
- 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
- 55
- Generator.java 用于生产MBG的代码
package com.dudu.mall_day1.mbg; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; import org.mybatis.generator.config.Configuration; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * 用于生产MBG的代码 * Created by macro on 2018/4/26. */ public class Generator { public static void main(String[] args) throws Exception { //MBG 执行过程中的警告信息 List<String> warnings = new ArrayList<String>(); //当生成的代码重复时,覆盖原代码 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); } } }
- 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
(5) 生成代码
运行 Generator.java 中的main方法,即可生成代码
- 控制台输出:
- 代码执行成功后,会多出如下文件:
3.源码下载
微信公众号搜索程序员孤夜(或扫描下方二维码),后台回复
生成器,即可获取本篇文章所使用的源代码下载链接。
- 相关阅读:
CentOS虚拟机装完了,不能粘贴window命令行?不能上网?
会场及展位变更通知 | GOPS全球运维大会地址更改,龙智展位更换至#106
Vue3 常用知识
【七】http服务器开发--客户端请求格式和服务器响应格式
有几种人工神经网络算法,人工神经网络算法实例
java-php-net-python-在线音乐播放网站.计算机毕业设计程序
【文化课学习笔记】【化学】选必一:化学反应速率
JUC锁:核心类AQS源码详解
零基础入门智能射频---python的无人机测向天线自动化设计
【企业架构】什么是数据架构? 管理数据的框架
- 原文地址:https://blog.csdn.net/weixin_42753193/article/details/126187495