【原创】mybatis-generator的用法和配置

2 篇文章 0 订阅
2 篇文章 0 订阅

**

mybatis-generator的用法和配置

**
总体架构如下
在这里插入图片描述

mybatis_generator.properties配置如下

########Oracle数据库配置 
#jdbc_url=jdbc:oracle:thin:@192.168.232.132:1521:ORCL
#jdbc_driver=oracle.jdbc.driver.OracleDriver
#jdbc_username=TEST
#jdbc_password=123456

#MySQL数据库配置 
jdbc_url=jdbc:mysql://localhost:3306/db1
jdbc_driver=com.mysql.jdbc.Driver
jdbc_username=root
jdbc_password=123456

#执行:右键 Run As ---->Maven build ---->Goals:mybatis-generator:generate
#或运行main方法
#输出目录
targetProject=src/main/java
#targetProject=E:/upload
#modelPackage,sqlMapperPackage,daoMapperPackage 通常一致
modelPackage=mybatisGenerator
sqlMapperPackage=mybatisGenerator
daoMapperPackage=mybatisGenerator
#要生成的表名
tableName=T_USER
#要生成的bean文件名前缀
domainObjectName=User

generatorConfig.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>
	<!--generatorConfiguration标签包含三个子标签,properties,classPathEntry,context。 注意三个子标签的顺序不能更改。 -->

	<!--properties用于指定外部属性元素,最多可以配置1个。 properties标签包含resource和url两个属性,只能使用其中一个来指定properties文件。 
		然后可以在配置文件中通过${property}引用。 -->
	<properties resource="mybatis_generator.properties" />

	<!--classPathEntry标签可以配置多个,也可不配置 常见用法通过location属性指定驱动的路径。 -->
<!-- 	<classPathEntry location="${jdbc_driverLocation}" /> -->

	<!--context标签,重要!至少配置一个,也可配置多个 context标签用于指定生成一组对象环境,数据库、生成的类型和数据库中的表等。 -->
	<context id="MBG" targetRuntime="MyBatis3"
		defaultModelType="conditional">
		<!-- 注意以下标签的顺序:property*,plugin*,commentGenerator?,jdbcConnection, javaTypeResolver?,javaModelGenerator,sqlMapGenerator?, 
			javaClientGenerator?,table+ -->
		<!-- 自动生成toString方法 -->
		<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
		<!-- 自动生成equals方法和hashcode方法 -->
		<!-- <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/> -->

		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
			<!-- 不希望生成的注释中包含时间戳 -->
			<property name="suppressDate" value="true" />
			<!-- 是否 自动为每一个生成的类创建一个构造方法 -->
			<property name="constructorBased" value="false" />
			<!-- 注释是否添加数据表的备注信息,默认false -->
			<property name="addRemarkComments" value="false" />
		</commentGenerator>

		<!-- 数据库连接 -->
		<jdbcConnection driverClass="${jdbc_driver}"
			connectionURL="${jdbc_url}" userId="${jdbc_username}"
			password="${jdbc_password}">
			<!-- 针对oracle数据库 -->
			<property name="remarksReporting" value="true"></property>
			<!-- 针对mysql数据库 -->
			<!-- <property name="useInformationSchema" value="true"></property> -->
		</jdbcConnection>

		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
			和 NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- 生成model模型,对应的包,存放位置可以指定具体的路径,如/ProjectName/src,也可以使用MAVEN来自动生成 -->
		<javaModelGenerator targetPackage="${modelPackage}"
			targetProject="${targetProject}">
			<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<!-- 			<property name="enableSubPackages" value="true" /> -->
			<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
			<property name="trimStrings" value="true" />
			<!-- 是否根据数据库字段命名 -->
			<property name="useActualColumnNames" value="true" />
			<!-- 是否 自动为每一个生成的类创建一个构造方法 -->
			<property name="constructorBased" value="false" />
			<!-- 是否合并而非覆盖已有代码 -->
			<property name="mergeable" value="true"></property>
		</javaModelGenerator>

		<!--对应的xml mapper文件 -->
		<sqlMapGenerator targetPackage="${sqlMapperPackage}"
			targetProject="${targetProject}">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
<!-- 			<property name="enableSubPackages" value="true" /> -->
		</sqlMapGenerator>

		<!-- 对应的dao接口 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="${daoMapperPackage}" targetProject="${targetProject}">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
<!-- 			<property name="enableSubPackages" value="true" /> -->
		</javaClientGenerator>

		<!-- 表名对应生成的实体 -->
		<table tableName="${tableName}"
			domainObjectName="${domainObjectName}" enableCountByExample="false"
			enableUpdateByExample="false" enableDeleteByExample="false"
			enableSelectByExample="false" selectByExampleQueryId="false">
			<!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法, 比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
			<property name="useActualColumnNames" value="false" />
		</table>
	</context>
</generatorConfiguration>

pom文件配置如下

<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>aa</groupId>
           	<artifactId>MybatisGenerator</artifactId>
           	<version>0.0.1-SNAPSHOT</version>
       
       	<properties>
  
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   		<mybatis-generator.version>1.3.7</mybatis-generator.version>
   		<mysql.version>5.1.26</mysql.version>
   		<oracle.version>12.2.0.1</oracle.version>
   		<mybatis.version>3.2.4</mybatis.version> 	</properties>
   
   	<dependencies> 		<dependency> 			<groupId>junit</groupId>
   			<artifactId>junit</artifactId> 			<version>3.8.1</version>
   			<scope>test</scope> 		</dependency> 		<dependency>
   			<groupId>mysql</groupId>
   			<artifactId>mysql-connector-java</artifactId>
   			<version>${mysql.version}</version> 		</dependency> 		<!--    Oracle连接 --> 		<dependency> 			<groupId>com.github.noraui</groupId>
   			<artifactId>ojdbc8</artifactId>
   			<version>${oracle.version}</version> 		</dependency>
   
   		<!-- <dependency> --> 		<!-- <groupId>com.oracle</groupId> -->
   		<!-- <artifactId>ojdbc6</artifactId> --> 		<!--    <version>${oracle.version}</version> --> 		<!-- </dependency> -->
   		<!-- log4j日志 --> 		<dependency> 			<groupId>apache-log4j</groupId>
   			<artifactId>log4j</artifactId> 			<version>1.2.8</version>
   		</dependency>
   
   
   		<dependency> 			<groupId>org.mybatis.generator</groupId>
   			<artifactId>mybatis-generator-core</artifactId>
   			<version>${mybatis-generator.version}</version> 		</dependency>
   		<dependency> 			<groupId>org.mybatis</groupId>
   			<artifactId>mybatis</artifactId>
   			<version>${mybatis.version}</version> 		</dependency>
   	</dependencies> 	<build> 		<finalName>mybatis-generator</finalName>
   		<pluginManagement> 			<plugins>
   				<plugin>
   					<groupId>org.mybatis.generator</groupId>
   					<artifactId>mybatis-generator-maven-plugin</artifactId>
   					<version>${mybatis-generator.version}</version>
   					<!-- 数据库驱动 -->
   					<dependencies>
   						<dependency>
   							<groupId>mysql</groupId>
   							<artifactId>mysql-connector-java</artifactId>
   							<version>${mysql.version}</version>
   						</dependency>
   						<dependency>
   							<groupId>com.github.noraui</groupId>
   							<artifactId>ojdbc8</artifactId>
   							<version>${oracle.version}</version>
   						</dependency>
   					</dependencies>
   					<!-- 自动生成 -->
   					<executions>
   						<execution>
   							<id>Generate MyBatis Artifacts</id>
   							<goals>
   								<goal>generate</goal>
   							</goals>
   							<configuration>
   								<!-- 指定文件位置好像不起作用,始终默认读取src/main/resources/generatorConfig.xml文件 -->
  
								<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
   								<!--允许移动生成的文件 -->
   								<verbose>true</verbose>
   								<!--允许覆盖生成的文件 -->
   								<overwrite>true</overwrite>
   							</configuration>
   						</execution>
   					</executions>
   				</plugin>
   				<plugin>
   					<groupId>org.apache.maven.plugins</groupId>
   					<artifactId>maven-compiler-plugin</artifactId>
   					<configuration>
   						<source>1.8</source>
   						<target>1.8</target>
   						<encoding>UTF-8</encoding>
   					</configuration>
   				</plugin> 			</plugins> 		</pluginManagement> 	</build>
       </project>

java方法(启动即可生成代码)

package mybatisGenerator;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class MybatisGeneratorUtil {

	public static void main(String[] args) throws Exception {
		MybatisGeneratorUtil mg = new MybatisGeneratorUtil();
		mg.generator();
	}

	public void generator() throws Exception {
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
//		File configFile = new File("src/main/resources/generatorConfig.xml");
//		//指定逆向工程配置文件
		File configFile = new File(
				this.getClass().getClassLoader().getResource("generatorConfig.xml").getPath().replaceAll("%20", " "));
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(configFile);
		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
		MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
		myBatisGenerator.generate(null);
		System.out.println("生成完毕>>>>>>>>>>>>>>>>>>");
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值