概述
最近在搭一套SSM的环境,其中要使用MyBatis Generator自动生成代码,在这过程中遇到了几个小问题,在这里记录一下,以备后续查看。
MyBatis Generator是一个自动生成MyBatis需要的Mapper和xml文件的工具,我们可以通过命令行的方式自动生成代码,也可以使用Maven插件的方式生成,在这里我使用的是Maven的方式生成的。
1、生成代码的步骤
- 首先我们需要在pom.xml中添加插件配置
<!-- MyBatis Gennerator-->
<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>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
</dependencies>
</plugin>
- 然后我们要新增配置一个文件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="test" targetRuntime="MyBatis">
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="false" />
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/world?serverTimezone=GMT%2B8" userId="root" password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.calculator.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置 -->
<sqlMapGenerator targetPackage="com.calculator.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.calculator.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 要生成哪些表 -->
<table tableName="city" domainObjectName="City" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />
</context>
</generatorConfiguration>
- 完成后选中pom.xml右击鼠标,选择Run As,再选择Maven build…
- 在Goals一栏中录入
mybatis-generator:generate
,点击Run即可根据数据库反向生成DAO层的基础代码
最终运行后代码中新增了三个文件City.java、CityMapper.java和CityMapper.xml:
2、遇到的问题
- 刚开始在插件中未配置数据库驱动依赖:
<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>
</plugin>
运行的时候报错:
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
需要给插件也配置数据库依赖,修改插件增加如下配置:
<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>
<!-- 驱动依赖 -->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</plugin>
- 按照第一点配置成功后,再运行,又报错:
Caused by: org.apache.maven.plugin.MojoExecutionException: The server time zone value ‘?й???’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
这是因为时区问题,参考了这篇文章 之后,发现原先的generatorConfig.xml文件是这样配置的:
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/world" userId="root" password="root">
需要添加时区:
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/world?serverTimezone=GMT%2B8" userId="root" password="root">
- 按照前两点都修改完了之后再运行,发现仍然报错:
Caused by: org.apache.maven.plugin.MojoExecutionException: Column name pattern can not be NULL or empty.
上网查了一下,这篇文章 里说是因为驱动的版本太高导致的,因为我使用的是${mysql.version}配置驱动的版本,用的是6.0.6版本的,修改为5.1.30版本之后就没问题了。
最后
以上就是飘逸黑米为你收集整理的使用Maven运行MyBatis Generator自动生成代码的全部内容,希望文章能够帮你解决使用Maven运行MyBatis Generator自动生成代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复