mybatis3逆向工程+mysql8

構建java工程

工程目錄

使用mybatis3和mysql8

GeneratorSqlmap.java

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 GeneratorSqlmap {
	public void generator() throws Exception{
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		//指定 逆向工程配置文件
		File configFile = new File("generatorConfig.xml"); 
		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);

	} 
	public static void main(String[] args) throws Exception {
		try {
			GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
			generatorSqlmap.generator();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

generatorConfig.xml

使用mysql8

<?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="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
		<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db_face_info?serverTimezone=UTC&amp;characterEncoding=utf-8&amp;useSSL=false" userId="root"
			password="root">
		</jdbcConnection>
		<!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和 
			NUMERIC 類型解析爲java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO類的位置 -->
		<javaModelGenerator targetPackage="com.face.pojo"
			targetProject=".\src">
			<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
			<property name="enableSubPackages" value="false" />
			 <!-- 是否對modal添加構造函數 -->
            <property name="constructorBased" value="true" />
			<!-- 從數據庫返回的值被清理前後的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.face.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.face.mapper" 
			targetProject=".\src">
			<!-- enableSubPackages:是否讓schema作爲包的後綴 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定數據庫表 -->
		<table schema="" tableName="tb_face"></table>
		<table schema="" tableName="tb_person"></table>

	</context>
</generatorConfiguration>

使用mysql8之前的版本

主要區別在於:

<!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
		<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/db_face_info?serverTimezone=UTC&amp;characterEncoding=utf-8&amp;useSSL=false" userId="root"
			password="root">
		</jdbcConnection>

1、採用對應的mysql-connetor-java.jar包
2、mysql8.0之前版本驅動包,加載的驅動配置類是com.mysql.jdbc.Driver,mysql8.0版本驅動包,加載的驅動配置類是com.mysql.cj.jdbc.Driver
3、配置URL路徑時需要注意,需要加上jdbc:mysql://localhost:3306/db_name?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false

**注意:**URL中查詢字段(例如:serverTimezone=UTC、characterEncoding=utf-8)之間使用&amp;分隔,不然會報 Mybatis數據庫連接報錯:對實體 "characterEncoding" 的引用必須以 ';' 分隔符結尾 的錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章