2017-12-15 更新:
- 问题描述:今天想着把自动生成的注释去掉,就是在产生的时候,配置成不产生注释;结果配置完之后,报错
Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project shapeManager: XML Parser Error on line 30: 元素类型为 "context" 的内容必须匹配 "(property*,plugin*,commentGenerator?,jdbcConnection,javaTypeResolver?,javaModelGenerator,sqlMapGenerator?,javaClientGenerator?,table+)"。 -> [Help 1]
- 原因分析:是因为context的属性配置要按照它给定的顺序来,就是上面报错的顺序
(property*,plugin*,commentGenerator?,jdbcConnection,javaTypeResolver?,javaModelGenerator,sqlMapGenerator?,javaClientGenerator?,table+)
- 解决办法:按顺序即可
代码如下:
<?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:\\Users\\ZHONGYUAN\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.41\\mysql-connector-java-5.1.41.jar"/>
<context id="DB2Tables">
<!--
注意:context的子元素要按照指定的顺序排列,否则报错 The content of element type "context" must match "(property*,plugin*,commentGenerator?
顺序是 (property*,plugin*,commentGenerator?,jdbcConnection,javaTypeResolver?,javaModelGenerator,sqlMapGenerator?,javaClientGenerator?,table+)
-->
<!-- 是否生成注释 -->
<commentGenerator>
<property name="suppressDate" value="true" />
</commentGenerator>
<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/shape_manager"
driverClass="com.mysql.jdbc.Driver" password="root" userId="root" />
<javaModelGenerator targetPackage="com.v11j.shapeManager.entity"
targetProject="D:\CompanyProject\STSProject\\shapeManager\\src\\main\\java" />
<sqlMapGenerator targetPackage="com.v11j.shapeManager.dao"
targetProject="D:\CompanyProject\STSProject\\shapeManager\\src\\main\\java" />
<javaClientGenerator targetPackage="com.v11j.shapeManager.dao"
targetProject="D:\CompanyProject\STSProject\\shapeManager\\src\\main\\java"
type="XMLMAPPER" />
<!-- 下面的enableCountByExample=false是为了不生成example类 -->
<table tableName="auto_measure_body_data" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="MySql" identity="true" />
</table>
</context>
</generatorConfiguration>
- MyBatis Generator的官网是:http://www.mybatis.org/generator/index.html;
- 这里我用的是eclipse插件MyBatis Generator:http://www.mybatis.org/generator/running/runningWithEclipse.html
- 安装步骤:
- 在Eclipse marketplace 里搜索 “MyBatis Generator” ,然后直接安装. 操作步骤为Help->Eclipse Marketplace
- 如果安装不成功,可以直接去网址下载: https://marketplace.eclipse.org/
- 如何使用:
- 在一个web项目webProject1中的根目录中,创建一个配置文件
- File>New>Other…
- 选择”MyBatis Generator Configuration File”,点击下一步
- 指定文件目录并且修改文件名,默认为generatorConfig.xml,完成即可。
- 具体的文件配置见下面的例子,需要注意的有以下几点:
- 默认的文件中没有配置classPathEntry属性,结果提示jdbc驱动包不存在。
- 运行该文件时,有两种方式:1-右键->Generate MyBatis Artifacts;2-Run as->Run MyBatis Generator;刚开始我用的第二种,因为第一种方式即将被遗弃;结果使用第二种时,我的targetProject属性的值写错了,却不提示,导致找了好久;使用第一种方式就会提示你具体的错误在哪里;结论:如果第一种能用,就先用第一种方式运行;
- 如果不想生成Example类,可以在table元素中配置enableCountByExample=false等5个属性
- 在一个web项目webProject1中的根目录中,创建一个配置文件
<?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="/Users/jalon/.m2/repository/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar" />
<context id="DB2Tables">
<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/blog" driverClass="com.mysql.jdbc.Driver" password="" userId="root" />
<javaModelGenerator targetPackage="com.v11j.blog.entity" targetProject="spring-boot/src/main/java" />
<sqlMapGenerator targetPackage="com.v11j.blog.mapper" targetProject="spring-boot/src/main/java" />
<javaClientGenerator targetPackage="com.v11j.blog.mapper" targetProject="spring-boot/src/main/java" type="XMLMAPPER" />
<table tableName="article" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="MySql" identity="true" />
<columnOverride column="user_id" property="userId" />
<columnOverride column="del_flag" property="delFlag" />
</table>
</context>
</generatorConfiguration>