使用自动生成需要,首先集成mybatis,完成连接数据库配置,并且安装Mybatis Generator插件
1、先来安装 Mybatis Generator
请参考文章 链接:https://blog.csdn.net/qq_39688441/article/details/123870572
2、修改pom.xml
添加数据库和mybatis 依赖
<!--数据库驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--springBoot整合Mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
再添加插件的依赖
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
在 build 的 plugins 中添加
<plugin>
<!--Mybatis-generator插件,用于自动生成Mapper和POJO-->
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<!--插件设置-->
<configuration>
<!--允许移动生成的文件-->
<verbose>true</verbose>
<!--启用覆盖-->
<overwrite>true</overwrite>
<!--自动生成配置 如果名字是generatorConfig.xml可以省略配置-->
<!--<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>-->
</configuration>
</plugin>
在路径 src/main/resources/ 下新建一个 generatorConfig.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>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否生成注释代时间戳-->
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxx?serverTimezone=Asia/Shanghai" userId="root" password="xxxxxxxx">
</jdbcConnection>
<javaTypeResolver>
<!--该属性可以控制是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal,默认值为false,一般不需要配置。-->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.lz.springboot_demo.model" targetProject="src/main/java">
<!--enableSubPackages:如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false。-->
<property name="enableSubPackages" value="true"/>
<!--trimStrings:是否对数据库查询结果进行trim操作,如果设置为true就会生成类似这样public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默认值为false。-->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射xml文件存放位置-->
<sqlMapGenerator targetPackage="com.lz.springboot_demo.dao" targetProject="src/main/resources/">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置(*Mapper.java)-->
<!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码
type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.lz.springboot_demo.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="user_main" domainObjectName="UserMain" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<!--useActualColumnNames:如果设置为true,那么MBG会使用从数据库元数据获取的列名作为生成的实体对象的属性。 如果为false(默认值),MGB将会尝试将返回的名称转换为驼峰形式。 在这两种情况下,可以通过 元素显示指定,在这种情况下将会忽略这个(useActualColumnNames)属性。-->
<property name="useActualColumnNames" value="true"/>
<!-- 数据库表主键 -->
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
基本上完了,
3、运行:
如图
选中generatorConfig.xml文件,反键,点击上图红框的图标运行。
4、运行时的错误以及解决方案
Ⅰ、错误一:
上面这运行之后,报错为下图,
没找到JDBC
需要检查下pom.xml,application.yml和generatorConfig.xml 文件
①检查下pom.xml
发现 pom.xml 中 mysql-connector-java 依赖是有的
②检查 application.yml
发现 application.yml 中的驱动也配置了的
哦,忘记贴出来了
server:
port: 8080
spring:
datasource:
#驱动
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxxx?characterEncoding=utf8
username: root
password: xxxxxxxx
#连接池类型
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 最小数
min-idle: 5
# 最大数
max-active: 20
# 初始大小
initial-size: 5
# 配置获取连接等待超时时间
max-wait: 6000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存时间 单位为毫秒
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开 PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,wall用于防火墙
filters: stat,wall
mybatis:
# model的包
type-aliases-package: com.lx.springboot_demo.model
configuration:
# 开启驼峰uName自动映射到u_name
map-underscore-to-camel-case: true
# 该配置项配置了MyBatis配置文件保存路径
mapper-locations: classpath:mappers/*.xml
# 配置扫描对应实体所在包,将mapper的实现类注入容器我们在启动器类上加了@MapperScan注解这里就不需要了
③检查 generatorConfig.xml
发现问题了,少了一句指定驱动地址的
找到你的 mysql-connector-java.jar 的路径,放进去。就解决这个问题了
<classPathEntry location="C:/Users/397004497/.m2/repository/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar"/>
Ⅱ、错误二:
运行后,出现新问题,如图
检查下指定的包路径和包名
如下图,我发现我的路径都写错了
改过之后在运行,发现还是不对。百度之后发现
如下图这里不对
项目是这样的
所以我把项目名加到 src 前面
如下图
三个生成路径都改一下,运行之后就成功了
如下图,对路径不满意的话,删了,自己填好路径重新运行即可
这里,生成出来的实体类,之后get set 方法
一般,还需要 toString
所以,手动生成一下