关于如何使用Mybatis的逆向工程,请查看我的博客
遇到的问题一
Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project springboot-redis: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Exception getting JDBC Driver: com.mysql.jdbc.Driver -> [Help 1]
解决方案:在pom文件的插件里面的逆向工程里面添加上mysql的连接驱动
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<!--为什么还需要使用mysql的连接依赖,是因为这个是mybatis的逆向工具需要使用到的连接,不然会提示:Exception getting JDBC Driver: com.mysql.jdbc.Driver-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
</dependencies>
</plugin>
遇到的问题二:使用application.yml来进行配置时候
yml
server:
port: 8002
#ruanjiayu-datasource
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.0.183:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
#mybatis
mybatis:
###表示xml文件所在的位置
mapper-locations: classpath*:com.jing.modules/*/*.xml
####在表示xml文件内的使用实体类名来进行实体类的映射,不需要在使用包名+类名,不过本人一般不开启这个,哈哈哈哈
type-aliases-package: com.jing.modules.po
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>
<!--<classPathEntry location="${jdbc.driverLocation}"/>-->
<context id="mybatisTables" defaultModelType="flat" targetRuntime="MyBatis3">
<property name="autoDelimiterKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator>
<!-- suppressAllComments 的值 true 表示不生成所有的注释,false(默认)生成所有注释-->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<!------------------使用yml作为配置文件时候,需要对其进行改变,目前只能使用手动添加数据-------------------->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.0.183:3306/report?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
userId="root"
password="123456">
<!--Orable数据库中需要拿到字段注释使用的配置-->
<!--<property name="remarksReporting" value="true"/>-->
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--导出的是实体类-->
<javaModelGenerator targetPackage="com.jing.modules.po" targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--导出的xml-->
<sqlMapGenerator targetPackage="com.jing.modules.mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--导出的是接口-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.jing.modules.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!--直接导出所有表-->
<!--<table tableName="%">-->
<table tableName="users">
<property name="useActualColumnNames" value="false"/>
</table>
</context>
</generatorConfiguration>
对于配置文件内的数据读取,不能再简单的通过${*****}来映射,只能通过手动来输入。
遇到的问题三:使用逆向工程,结果对其操作了所有库内的所有表
出现这样的原因是我使用了8.x以上jar连接mysql来进行逆向生成
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--mybatis的逆向工程插件的使用-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<!--为什么还需要使用mysql的连接依赖,是因为这个是mybatis的逆向工具需要使用到的连接,不然会提示:Exception getting JDBC Driver: com.mysql.jdbc.Driver-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
解决办法:修改generatorConfig.xml内的连接mysql的url,添加&nullCatalogMeansCurrent=true
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://192.168.0.183:3306/report?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true"
userId="root"
password="123456">
<!--Orable数据库中需要拿到字段注释使用的配置-->
<!--<property name="remarksReporting" value="true"/>-->
</jdbcConnection>