如何自动生成entity类等文件

使用maven生成一系列自动的类entity类等等,这个应该是比较详细的

可以生产实体类、DAO接口和Mapper映射文件

  1. 新建一个mavenproject,

2. pom.xml文件添加依赖和build,要注意数据库的形式,我用的是SQLserver

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>123321231</groupId>
  <artifactId>1234</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>testMaven</name>
  
  <dependencies>
		
		
		
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.3</version>
		</dependency>
		
		<dependency>
			<groupId>com.microsoft.sqlserver</groupId>
			<artifactId>sqljdbc4</artifactId>
			<version>4.0</version>
		</dependency>
 
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>
		

	</dependencies>	
  
  <build>
		<finalName>autoGenerate</finalName>
		<plugins>  
	        <plugin>
	           <groupId>org.mybatis.generator</groupId>
	           <artifactId>mybatis-generator-maven-plugin</artifactId>
	           <version>1.3.2</version>
	           <executions>
	              <execution>
	                 <id>Generate MyBatis Files</id>
	                 <goals>
	                    <goal>generate</goal>
	                 </goals>
	                 <phase>generate</phase>
	                 <configuration>
	                    <verbose>true</verbose>
	                    <overwrite>true</overwrite>
	                 </configuration>
	              </execution>
	           </executions>
	 
	           <dependencies>
	           	  <!-- mysql 用这个 -->
	              <!-- <dependency>
	                 <groupId>mysql</groupId>
	                 <artifactId>mysql-connector-java</artifactId>
	                 <version>5.1.38</version>
	              </dependency> -->
	              
	              <dependency>
						<groupId>com.microsoft.sqlserver</groupId>
						<artifactId>sqljdbc4</artifactId>
						<version>4.0</version>
					</dependency>
	              
	              
	              <dependency>
	                 <groupId>org.mybatis.generator</groupId>
	           <artifactId>mybatis-generator-core</artifactId>
	                 <version>1.3.5</version>
	              </dependency>
	 
	              <dependency>
	                 <groupId>org.mybatis</groupId>
	                 <artifactId>mybatis</artifactId>
	                 <version>3.4.2</version>
	              </dependency>
	           </dependencies>
	        </plugin> 
	    </plugins>
	</build> 
</project>

3. 在resource目录下添加generatorConfiguration.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="application.properties"/>
 
	<!-- 一个数据库一个context -->  
    <context id="MBG" targetRuntime="MyBatis3">
        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
        <plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin" />
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
        
        <!-- 注释 -->  
        <commentGenerator >  
            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->  
            <property name="suppressDate" value="true" /> <!-- 是否生成注释带时间戳-->  
        </commentGenerator>  
        
        <!-- jdbc连接 -->  
        <jdbcConnection 
        	driverClass="${jdbc.driverClassName}"
            connectionURL="${jdbc.url}" 
            userId="${jdbc.username}" 
            password="${jdbc.password}">
        </jdbcConnection>
 
 		<!-- 类型转换 -->  
        <javaTypeResolver>  
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->  
            <property name="forceBigDecimals" value="false"/>  
        </javaTypeResolver>  
 
		<!-- 生成实体类地址 -->   
        <javaModelGenerator targetPackage="${package.entity}" targetProject="src/main/java">
        	<!-- 该属性只对MyBatis3有效,如果true就会使用构造方法入参,如果false就会使用setter方式。默认为false。 -->
            <property name="constructorBased" value="true" />
             <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->  
            <property name="enableSubPackages" value="false" />
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->  
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
 
		<!-- 生成mapxml文件 -->  
        <sqlMapGenerator targetPackage="${package.mapper}" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
 
		<!-- 生成mapxml对应client,也就是接口dao -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="${package.mapper}" targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!--   选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素
			        选择的table会生成一下文件:
			        1,SQL map文件
			        2,生成一个主键类;
			        3,除了BLOB和主键的其他字段的类;
			        4,包含BLOB的类;
			        5,一个用户生成动态查询的条件类(selectByExample, deleteByExample),可选;
			        6,Mapper接口(可选)
			
			        tableName(必要):要生成对象的表名;
			        注意:大小写敏感问题。正常情况下,MBG会自动的去识别数据库标识符的大小写敏感度,在一般情况下,MBG会
			            根据设置的schema,catalog或tablename去查询数据表,按照下面的流程:
			            1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使用指定的大小写格式去查询;
			            2,否则,如果数据库的标识符使用大写的,那么MBG自动把表名变成大写再查找;
			            3,否则,如果数据库的标识符使用小写的,那么MBG自动把表名变成小写再查找;
			            4,否则,使用指定的大小写格式查询;
			        另外的,如果在创建表的时候,使用的""把数据库对象规定大小写,就算数据库标识符是使用的大写,在这种情况下也会使用给定的大小写来创建表名;
			        这个时候,请设置delimitIdentifiers="true"即可保留大小写格式;
			
			        可选:
			        1,schema:数据库的schema;
			        2,catalog:数据库的catalog;
			        3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
			        4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;
			        5,enableInsert(默认true):指定是否生成insert语句;
			        6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);
			        7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;
			        8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);
			        9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);
			        10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;
			        11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
			        12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
			        13,modelType:参考context元素的defaultModelType,相当于覆盖;
			        14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性)
			        15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性
			
			        注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写;
     	-->
 
        <table tableName="${tableName1}" 
        	enableCountByExample="false" 
        	enableUpdateByExample="true"
            enableDeleteByExample="false" 
            enableSelectByExample="true"
            selectByExampleQueryId="true">
        	<!-- 参考 javaModelGenerator 的 constructorBased属性-->
            <property name="constructorBased" value="true" />
	            <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
	            <property name="useActualColumnNames" value="false" />
            <!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; -->
            <property name="ignoreQualifiersAtRuntime" value="false" />
            <!-- 参考 javaModelGenerator 的 immutable 属性 -->
        	<!-- <property name="immutable" value="false"/> -->
        </table>
        <!-- <table tableName="${tableName2}" 
        	enableCountByExample="false" 
        	enableUpdateByExample="true"
            enableDeleteByExample="false" 
            enableSelectByExample="true"
            selectByExampleQueryId="true">
        	参考 javaModelGenerator 的 constructorBased属性
            <property name="constructorBased" value="true" />
            如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate
            <property name="useActualColumnNames" value="false" />
            默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema;
            <property name="ignoreQualifiersAtRuntime" value="false" />
            参考 javaModelGenerator 的 immutable 属性
        	<property name="immutable" value="false"/>
        </table>
        <table tableName="${tableName3}" 
        	enableCountByExample="false" 
        	enableUpdateByExample="true"
            enableDeleteByExample="false" 
            enableSelectByExample="true"
            selectByExampleQueryId="true">
        	参考 javaModelGenerator 的 constructorBased属性
            <property name="constructorBased" value="true" />
            如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate
            <property name="useActualColumnNames" value="false" />
            默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema;
            <property name="ignoreQualifiersAtRuntime" value="false" />
            参考 javaModelGenerator 的 immutable 属性
        	<property name="immutable" value="false"/>
        </table> -->
    </context>
</generatorConfiguration>

4. 在resources下添加application.properties文件,填好你的地址,驱动,账号密码等等

jdbc.url=jdbc:sqlserver
jdbc.driverClassName=
jdbc.username=
jdbc.password=

 
package.entity=
package.mapper=
#\u6307\u5B9A\u8981\u751F\u6210\u4EE3\u7801\u7684\u8868\u540D,\u5982\u679CtableName\u7B49\u4E8E%,\u5219\u751F\u6210\u5168\u90E8\u8868\u7684\u4EE3\u7801
tableName1=

5. 接下来就右键项目->Run As->Run as Configurations,然后添加新的maven build,名字可以随意打,goals如图

 6. apply,run。在目录里面就可以找到了

猜你喜欢

转载自blog.csdn.net/endif6/article/details/81097303