昨天深夜,在自家的电脑上也安装了Mybatis generator的插件,安装过程请参考 STS 整合 mybatis generator 生成文件 一文中的安装步骤,安装完成后,在生成文件时卡壳了,怎么也生成不了。
在公司电脑上,使用上文中的生成方式,明明是可以的生成的,换成了自家的电脑,怎么这么不给力,一点反应也没有,控制台没有任何输出,这个确实让人郁闷。但还是花时间调查了一翻,把两个项目的环境仔细进行了对比。对比之下发现了差异,也发现生成文件的两种方式。
两个项目都是使用Spring Starter Project生成的,但是在pom.xml文件里,有一点不同,一个pom文件中没有mysql-connector-java架包,一个pom中加了mysql-connector-java架包。
pom.xml中的数据库连接架包:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
细细研究发现,pom中有mysql-connector-java架包的,generatorConfig.xml配置的数据库连接架包就失去了作用;这时,点击generatorConfig.xml中的右键Run AS->Run MyBatis generator,有可能没有任何反应,控制台不会有任何输出。
这时,需要在Run Configuration下,对Configuration进行配置,再次选中generatorConfig.xml,点击运行才能生成文件,这时生效的应该是pom.xml中的数据库连接架包。这么说,是因为有两个架包让生成文件傻傻分不清了?!
generatorConfig.xml中的数据库连接架包:
<!-- 数据库驱动包位置 -->
<classPathEntry location="C:/maven_repo/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar" />
说了那么多,还是上具体的差异代码比较好。
第一种方式
pom.xml 中的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spirng-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spirng-mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
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="C:/maven_repo/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar" />
<context id="context" >
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 数据库连接配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test1" userId="root" password="123456" >
<property name="useInformationSchema" value="true"/>
</jdbcConnection>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.example.demo.entity" targetProject="spirng-mybatis-demo/src/main/java" >
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
<!-- 生成的<u>xml</u>映射文件包名和位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="spirng-mybatis-demo/src/main/resources" >
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator targetPackage="com.example.demo.dao" targetProject="spirng-mybatis-demo/src/main/java" type="XMLMAPPER" >
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的那些表, tableName表名,domainObjectName生成后的对象名称 -->
<table tableName="t_test" domainObjectName="Test" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
按照这种方式配置,直接右击generatorConfig.xml就可以生成对应的mapper和xml文件。
第二种方式
pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spirng-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spirng-mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
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="context" >
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 数据库连接配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test1" userId="root" password="123456" >
<property name="useInformationSchema" value="true"/>
</jdbcConnection>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.example.demo.entity" targetProject="spirng-mybatis-demo/src/main/java" >
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
<!-- 生成的<u>xml</u>映射文件包名和位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="spirng-mybatis-demo/src/main/resources" >
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator targetPackage="com.example.demo.dao" targetProject="spirng-mybatis-demo/src/main/java" type="XMLMAPPER" >
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的那些表, tableName表名,domainObjectName生成后的对象名称 -->
<table tableName="t_test" domainObjectName="Test" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
这时,需要点击菜单栏的三角运行按钮下的Run Configuration进行配置





进行以上的配置之后,就可以正常生成mapper和xml文件了。
总结
使用MyBatis generator 生成文件,本是很简单的操作,但是因为项目环境的微妙差异,就会有不一样的结果。这时,只有细心一点,再细心一点,多对比一下,找出差异,就能解决这个问题。

网友评论