generatorConfig.xml

本文详细介绍了MyBatis Generator的配置方法,包括如何设置Java文件编码、数据库连接信息、生成Java模型、SQL映射文件及Mapper接口等内容。此外还介绍了如何通过配置生成不可变的Java类以及如何自定义生成的类所在的包。
<?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="mysql" defaultModelType="hierarchical"	targetRuntime="MyBatis3Simple">

		<!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表; 一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖 -->
		<property name="autoDelimitKeywords" value="false" />
		<!-- 生成的Java文件的编码 -->
		<property name="javaFileEncoding" value="UTF-8" />

		<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
		<property name="beginningDelimiter" value="`" />
		<property name="endingDelimiter" value="`" />
		
		<!-- 注释生成器 -->
		<commentGenerator>
			<property name="suppressDate" value="true"/>
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		
		<!-- 必须要有的,使用这个配置链接数据库 @TODO:是否可以扩展 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql:///p2p" userId="root" password="admin">
			<!-- 这里面可以设置property属性,每一个property属性都设置到配置的Driver上 -->
		</jdbcConnection>

		<!-- java模型创建器,是必须要的元素 负责:1,key类(见context的defaultModelType);2,java类;3,查询类 
			targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制; targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录 -->
		<javaModelGenerator targetPackage="com.company.domain" targetProject="src/main/java">
			<!-- for MyBatis3/MyBatis3Simple 自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter; -->
			<property name="constructorBased" value="false" />
			<!-- for MyBatis3 / MyBatis3Simple 是否创建一个不可变的类,如果为true, 那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类 -->
			<property name="immutable" value="false" />
		</javaModelGenerator>


		<!-- 生成SQL map的XML文件生成器, 注意,在Mybatis3之后,我们可以使用mapper.xml文件+Mapper接口(或者不用mapper接口), 
			或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的话,这个元素就必须配置 
			targetPackage/targetProject:同javaModelGenerator -->
		<sqlMapGenerator targetPackage="com.company.mapper"
			targetProject="src/main/java">
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>


		<!-- 对于mybatis来说,即生成Mapper接口,注意,如果没有配置该元素,那么默认不会生成Mapper接口 targetPackage/targetProject:同javaModelGenerator 
			type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
		    1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML; 
			2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中; 
			3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML; 
			注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER -->
		<javaClientGenerator targetPackage="com.company.mapper"
			type="XMLMAPPER" targetProject="src/main/java">
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
			<property name="enableSubPackages" value="true" />

			<!-- 可以为所有生成的接口添加一个父接口,但是MBG只负责生成,不负责检查 <property name="rootInterface" 
				value=""/> -->
		</javaClientGenerator>
	
		<table tableName="Logininfo" domainObjectName="Logininfo" delimitIdentifiers="true">
			<!-- 参考 javaModelGenerator 的 constructorBased属性 -->
			<property name="constructorBased" value="false" />
			<generatedKey column="id" sqlStatement="JDBC"/>
		</table>

	</context>

</generatorConfiguration>

### 正确配置和使用 `generatorConfig.xml` 文件的方法 #### 配置结构概述 `generatorConfig.xml` 是 MyBatis Generator (MBG) 的核心配置文件,用于定义数据库表到 Java 实体类和其他相关代码的映射规则。该文件主要由 `<generatorConfiguration>` 根元素及其子元素组成[^2]。 #### 主要配置项说明 1. **引入外部属性文件** 使用 `<properties>` 元素可以指定一个外部属性文件路径,从而简化配置并提高可维护性。例如: ```xml <properties resource="db.properties"/> ``` 这样可以通过 `${propertyName}` 的方式引用属性文件中的值[^3]。 2. **JDBC 数据库连接信息** 在 `<context>` 下的 `<jdbcConnection>` 中配置 JDBC 信息,这是访问数据库的关键部分。以下是示例配置: ```xml <jdbcConnection driverClass="${driver}" connectionURL="${url}" userId="${username}" password="${password}"> </jdbcConnection> ``` 3. **目标项目目录 (`targetProject`)** 定义生成的 Java 文件存储位置以及包名前缀。例如: ```xml <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaModelGenerator> ``` 4. **SQL 映射文件生成器** 如果需要生成 SQL 映射文件,则需配置 `<sqlMapGenerator>` 和 `<ibatorContext>` 等相关内容。例如: ```xml <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> </sqlMapGenerator> ``` 5. **Java Client 生成器** 可选地生成 DAO 或 Mapper 接口实现类: ```xml <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> </javaClientGenerator> ``` 6. **表选择与列覆盖规则** 使用 `<table>` 元素来指定哪些表参与生成操作,并可通过 `<columnOverride>` 自定义字段名称或其他细节。例如: ```xml <table tableName="users" domainObjectName="User"> <columnOverride column="id" property="userId" javaType="int"/> </table> ``` 7. **插件扩展支持** MBG 支持通过自定义插件增强功能,比如修改默认行为或增加额外逻辑。例如: ```xml <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/> ``` 8. **运行生成过程** 当完成上述所有必要配置之后,可以选择 Maven 插件或者命令行工具执行生成任务。如果采用的是 Maven 方式,则只需按照如下步骤操作即可[^1]: - 设置好对应的 POM 文件; - 执行类似于 `mvn mybatis-generator:generate` 命令启动流程; --- #### 示例完整的 `generatorConfig.xml` 下面提供了一个较为全面的例子供参考: ```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> <!-- 引入外部属性 --> <properties resource="db.properties"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 添加注释 --> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 数据库链接 --> <jdbcConnection driverClass="${driver}" connectionURL="${url}" userId="${username}" password="${password}"/> <!-- Model 类生成 --> <javaModelGenerator targetPackage="com.example.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaModelGenerator> <!-- Mapper XML 文件生成 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> </sqlMapGenerator> <!-- Mapper Interface 生成 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> </javaClientGenerator> <!-- 表配置 --> <table tableName="orders" domainObjectName="Order"> <columnOverride column="order_id" property="orderId" jdbcType="INTEGER"/> </table> </context> </generatorConfiguration> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值