mybatis maven generator 插件自动生成代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TenderGuo/article/details/77412719

简介:由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫

1.创建maven项目在pom.xml文件中添加如下代码

	<plugin>
		<groupId>org.mybatis.generator</groupId>
		<artifactId>mybatis-generator-maven-plugin</artifactId>
		<version>1.3.2</version>
		<configuration>
			<verbose>true</verbose>
			<overwrite>true</overwrite>
			<!-- generator 文件放置位置(可选) -->
			<configurationFile>${basedir}/src/main/resources/maven_build/mybatis-generator-entity.xml</configurationFile>
		</configuration>
	</plugin>


2.在项目中添加mybatis-generator-entity.xml文件


这里由于我的xml文件不是直接放在resources目录下所以我在第一步的配置里面多加了一步指定xml位置的配置,

如果是直接放在resources目录下的话是不需要指定的,mybatis-generator-entity.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>
	<!-- 可以用于加载配置项或者配置文件,并且在pom.xml中定义的properties都可以直接在generatorConfig.xml中使用 -->
	<properties resource="${db.config.file}" />

	<!-- 在MBG工作的时候,需要额外加载的依赖包 location属性指明加载jar/zip包的全路径 -->
	<classPathEntry
		location="${parent_path}/target/mssm/WEB-INF/lib/mysql-connector-java-5.1.30.jar" />

	<!-- context:生成一组对象的环境 id:必选,上下文id,用于在生成错误时提示 defaultModelType:指定生成对象的样式 
		1,conditional:类似hierarchical; 2,flat:所有内容(主键,blob)等全部生成在一个对象中; 3,hierarchical:主键生成一个XXKey对象(key 
		class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class) targetRuntime: 1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample; 
		2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample; introspectedColumnImpl:类全限定名,用于扩展MBG -->
	<context id="context1" targetRuntime="MyBatis3">

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

		<!-- 生成的Java文件的编码 -->
		<property name="javaFileEncoding" value="UTF-8" />

		<!-- 格式化java代码 -->
		<property name="javaFormatter"
			value="org.mybatis.generator.api.dom.DefaultJavaFormatter" />

		<!-- 格式化XML代码 -->
		<property name="xmlFormatter"
			value="org.mybatis.generator.api.dom.DefaultXmlFormatter" />

		<!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
		<property name="beginningDelimiter" value="`" />
		<property name="endingDelimiter" value="`" />

		<!-- 增加Models ToStirng方法 -->
		<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />

		<!-- 增加Models Serializable实现 -->
		<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

		<plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin" />
		<!-- 去除注释 -->
		<commentGenerator>
			<!-- 是否生成注释代时间戳 -->
			<property name="suppressDate" value="true" />
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>

		<!-- 必须要有的,使用这个配置链接数据库 -->
		<jdbcConnection driverClass="${driver}" connectionURL="${url}"
			userId="${username}" password="${password}">
			<!-- 这里面可以设置property属性,每一个property属性都设置到配置的Driver上 -->
		</jdbcConnection>

		<!-- java类型处理器 用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl; 注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 
			NUMERIC数据类型; -->
		<javaTypeResolver
			type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
			<!-- true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型 false:默认, scale>0;length>18:使用BigDecimal; 
				scale=0;length[10,18]:使用Long; scale=0;length[5,9]:使用Integer; scale=0;length<5:使用Short; -->
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- 指定实体位置,生成实体 -->
		<javaModelGenerator targetPackage="${package.path}.entity"
			targetProject="${java.file.dir}">
			<!-- 设置一个根对象, 如果设置了这个根对象,那么生成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项 
				注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新生成这些属性了,包括: 1,属性名相同,类型相同,有相同的getter/setter方法; -->
			<!-- <property name="rootClass" value="com.gfa4j.mybatis.model.BaseModel" /> -->
			<!-- for MyBatis3/MyBatis3Simple 自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter; -->
			<property name="constructorBased" value="false" />
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
			<!-- <property name="enableSubPackages" value="true" /> -->
			<!-- for MyBatis3 / MyBatis3Simple 是否创建一个不可变的类,如果为true, 那么MBG会创建一个没有setter方法的类,取而代之的是类似constructorBased的类 -->
			<property name="immutable" value="false" />
			<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- 指定mapper文件位置,生成mapper文件 -->
		<sqlMapGenerator targetPackage="${package.path}.entity.mapper"
			targetProject="${java.file.dir}">
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
			<!-- <property name="enableSubPackages" value="true" /> -->
		</sqlMapGenerator>

		<!-- 指定dao文件位置,生成dao接口 -->
		<javaClientGenerator targetPackage="${package.path}.dao"
			targetProject="${java.file.dir}" type="XMLMAPPER">
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
			<!-- <property name="enableSubPackages" value="true" /> -->

			<!-- 可以为所有生成的接口添加一个父接口,但是MBG只负责生成,不负责检查 <property name="rootInterface" 
				value=""/> -->

		</javaClientGenerator>

		<!-- 需要生成的表,tableName表名,domainObjectName生成的实体名 -->
		<table tableName="user" domainObjectName="User">
			<!-- 忽略列,不生成bean 字段 -->
			<!-- <ignoreColumn column="age" /> -->
			<!-- 指定列的java数据类型 -->
			<!-- <columnOverride column="id" jdbcType="INTEGER" javaType="java.lang.Long"/> -->
		</table>

	</context>
</generatorConfiguration>
这里根据自己的实际情况更改实体、mapper、dao等文件的生成位置

3.选中pom.xml文件,右击,选择Run As=>Run Configurations=>Maven Build=>新建,

点击Browse Workspace选中自己的项目,然后在Goals中输入mybatis-generator:generate,

最后点击Apply,然后run就可以生成代码了


当然如果是idea,会在maven窗口自动添加的


也可以直接去mybatis生成实列下载例子,里面附带了我从网上找到的一个更加详细的generator.xml的文件

如果使用过程中存在问题欢迎评论在下方,补充一句我使用的环境是win10 + Eclipse + maven + ssm框架

展开阅读全文

没有更多推荐了,返回首页