MyBatis逆向工程代碼的生成及使用詳解

MyBatis逆向工程代碼的生成

      在MyBatis的開發過程中,數據庫表、實體類、SQL映射文件(mapper.xml文件)以及動態代理接口四者之間有着非常密切的關係。

         一般的開發流程是:先設計並創建數據庫表(如user表),再根據數據庫表創建對應的實體類(如User.java),之後再編寫SQL映射文件(如userMapper.xml),最後再根據SQL映射文件編寫動態代理接口(如userMapper.java)。

除此之外,我們還可以只設計並創建數據庫表,然後利用MyBatis提供的工具來自動生成其他三個(實體類、SQL映射文件和動態代理接口),以下是具體的步驟:

準備工作:

   1、在數據庫中準備所需的數據表(如 user、user_card)兩張表

  注: 直接將sql語句複製進去,運行。如若發現錯誤,檢查是否出現其他符號,由於網頁轉換導致有時候不能識別。

      user表:

INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (1, '張三', 20, '150');
INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (2, '李四', 21, '151');
INSERT INTO `ssm_practice`.`user`(`id`, `name`, `age`, `card_id`) VALUES (3, '王五', 22, '152');

user_card表:

INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (1, '150', '1');
INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (2, '151', '2');
INSERT INTO `ssm_practice`.`user_card`(`id`, `card_id`, `card_class`) VALUES (3, '152', '3');

2、在Maven項目中引入所需jar包 

   博主文件位置:

      

   普通工程可以下載jar包引入進項目即可(mysq、mybatis、及mybatis-generator-core)

     普通工程jar下載地址:

https://repo1.maven.org/maven2/org/mybatis/generator/mybatis-generator-core/1.3.7/mybatis-generator-core-1.3.7.jar

 Maven項目pom文件引入

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
   <dependency>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-core</artifactId>
	<version>1.3.7</version>
   </dependency>

3、創建配置文件並進行編寫

   generator.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>
	<!-- mybatisGenerator:上下文名稱    targetRuntime:環境是MyBatis3.x -->
	<context id="mybatisGenerator" targetRuntime="MyBatis3">
		<!--自動生成類時加不加註釋 -->
		<commentGenerator>
			<!--
				 suppressAllComments屬性值:
				 true:自動生成實體類、SQL映射文件時沒有註釋 
				 false:自動生成實體類、SQL映射文件,並附有註釋 
			-->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		
		<!-- 數據庫連接信息 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://127.0.0.1:3306/ssm_practice" 
			userId="root"
			password="root">
		</jdbcConnection>
		<!-- 
			forceBigDecimals屬性值:
			   true:把數據表中的DECIMAL和NUMERIC類型, 解析爲JAVA代碼中的java.math.BigDecimal類型 
			   false(默認):把數據表中的DECIMAL和NUMERIC類型, 解析爲解析爲JAVA代碼中的Integer類型 
		-->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		
		<!-- targetProject屬性值: 實體類的生成位置     targetPackage屬性值:實體類所在包的路徑 -->
		<javaModelGenerator
			targetPackage="com.sss.mybatisGenerator.pojo"   targetProject=".\src\main\java">
			<!-- 
				trimStrings屬性值: 
				true:對數據庫的查詢結果進行trim(去空格)操作 
				false(默認):不進行trim操作
			 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
		
		<!-- 生成mapper文件 -->
		<!-- targetProject屬性值:SQL映射文件的生成位置     targetPackage屬性值:SQL映射文件所在包的路徑 -->
		<sqlMapGenerator targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".\src\main\java">
		</sqlMapGenerator>
		
		<!-- 生成動態代理的接口   我這裏mapper.xml與接口在同一個包下  -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.sss.mybatisGenerator.mapper"  targetProject=".\src\main\java">
		</javaClientGenerator>
		
		<!-- 指定數據庫中的表 -->
		<table tableName="user" />
		<table tableName="user_card" />
		
	</context>
</generatorConfiguration>

4、編寫測試代碼

注:new File("配置文件路徑")時    配置文件的路徑一定要寫對,不然會報錯

MyBatisGeneratorTest.java

package com.sss.mybatisGenerator;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
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.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

/**
 * @Description: Mybatis逆向工程測試類
 */
public class MyBatisGeneratorTest {

	public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {

		//  找到配置文件
		File file = new File("src/main/resources/generator.xml");
		//  需要生成List保存警告信息
		List<String> warnings = new ArrayList<String>();
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(file);
		DefaultShellCallback callBack = new DefaultShellCallback(true);
		//  逆向工程核心類
		MyBatisGenerator generator = new MyBatisGenerator(config, callBack, warnings);
		generator.generate(null);
	}
}

5、測試

運行測試類,控制檯沒有打印信息,證明生成類成功,可以去路徑下刷新查看。

 如有問題,請留言

 

————————————————————————————————————————————————

堅持總結工作中遇到的技術問題,堅持記錄工作中所思所見。羣中可下載相關資料

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