ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 通过Maven运行 MyBatis Generator MyBatis Generator (MBG) 包含了一个可以集成到Maven构建的Maven插件,按照Maven的配置惯例, 将MBG集成到Maven很容易. 最简配置如下: ``` <project ...> ... <build> ... <plugins> ... <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.0</version> </plugin> ... </plugins> ... </build> ... </project> ``` 当然,事情永远不会那么容易! ## Maven Goal and Execution(Maven 目标和执行) The MBG Maven plugin 包含一个目标: * `mybatis-generator:generate` 这个目标不会被Maven自动执行,他可以通过以下两种方式执行。 可以在命令行通过以下命令执行: * `mvn mybatis-generator:generate` 您可以通过标准的Maven命令属性传递参数, 例如: * `mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate` 这条命令会使MBG覆盖重名的文件 在一个连续的编译环境中,您可能想让MGB作为Maven构建的一部分自动执行。 这可以通过配置自动执行的目标来实现,这种情况的例子如下: ``` <project ...> ... <build> ... <plugins> ... <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project> ``` MBG插件将会绑定到Maven构建的 `generate-sources` 阶段。 所以他会在编译步骤之前执行。 此外注意MBG目标将绑定生成Java和XML资源文件的建立,他们都将包括在生成的JAR包内。 ## MyBatis Generator 配置属性 所有配置在POM中的属性都可以传递到配置文件,并且可以用通常的方式使用。例如: ``` <project ...> ... <properties> <dao.target.dir>src/main/java</dao.target.dir> </properties> ... <build> ... <plugins> ... <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.0</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project> ``` 在这种情况下,属性可以在配置文件中被访问的语法是 `${dao.target.dir}`. ## 参考参数 所有的参数都是可选的,大部分都适合的默认值。 | 参数 | 表达式 | 类型 | 注释 | | --- | --- | --- | --- | | configurationFile | ${mybatis.generator.configurationFile} | java.io.File | 指定配置文件的名称。默认值:${basedir}/src/main/resources/generatorConfig.xml | | contexts | ${mybatis.generator.contexts} | java.lang.String | 如果指定了该参数,逗号隔开的这些context会被执行。 这些指定的context必须和配置文件中 &lt;context&gt; 元素的 `id` 属性一致。 只有指定的这些contextid会被激活执行。如果没有指定该参数,所有的context都会被激活执行。 | | jdbcDriver | ${mybatis.generator.jdbcDriver} | java.lang.String | 如果您指定了 `sqlScript` 参数, 当连接数据库时这里的值是JDBC驱动类的权限定名称。 | | jdbcPassword | ${mybatis.generator.jdbcPassword} | java.lang.String | 如果您指定了 `sqlScript` 参数, 这是连接数据库的密码。 | | jdbcURL | ${mybatis.generator.jdbcURL} | java.lang.String | 如果您指定了 `sqlScript` 参数, 这是连接数据库的JDBC URL | | jdbcUserId | ${mybatis.generator.jdbcUserId} | java.lang.String | 如果您指定了 `sqlScript` 参数, 这里是连接数据库的用户id | | outputDirectory | ${mybatis.generator.outputDirectory} | java.io.File | 将放置 MBG 所生成文件的目录。 这个目录是用于当 `targetProject` 在配置文件中设置特殊值的"MAVEN"时使用(大小写敏感)。默认值:${project.build.directory}/generated-sources/mybatis-generator | | overwrite | ${mybatis.generator.overwrite} | boolean | 如果指定了该参数,如果生成的java文件存在已经同名的文件,新生成的文件会覆盖原有的文件。 如果没有指定该参数,如果存在同名的文件,MBG会给新生成的代码文件生成一个唯一的名字(例如: MyClass.java.1, MyClass.java.2 等等)。 **重要: 生成器一定会自动合并或覆盖已经生成的XML文件。**默认值:false | | sqlScript | ${mybatis.generator.sqlScript} | java.lang.String | 要在生成代码之前运行的 SQL 脚本文件的位置。 如果空,不会执行任何脚本。 如果不是空,`jdbcDriver`, `jdbcURL` 参数必须提供。 另外如果连接数据库需要认证也需要提供 `jdbcUserId` 和 `jdbcPassword` 参数。值可以使一个文件系统的绝对路径或者是一个使用"classpath:"开头放在构建的类路径下的路径。 | | tableNames | ${mybatis.generator.tableNames} | java.lang.String | 如果指定了该参数,逗号隔开的这个表会被运行, 这些表名必须和 &lt;table&gt; 配置中的表面完全一致。只有指定的这些表会被执行。 如果没有指定该参数,所有的表都会被执行。 按如下方式指定表明: `table` `schema.table` `catalog..table` 等等。 | | verbose | ${mybatis.generator.verbose} | boolean | 如果指定该参数,执行过程会输出到控制台。 | ## targetProject 解释 与Maven运行时 生成器 配置的 `targetProject` 属性有不同的解释。 如果指定值为"MAVEN" (大小写敏感), `targetProject` 将被设置为插件的输出目录,而且如果不存在这个目录,将会创建这个目录。 如果没有设置为 "MAVEN", 那么`targetProject` 将会被 MGB 当成普通的 - 它必须是一个已经存在的目录。