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下載地址:
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、測試
運行測試類,控制檯沒有打印信息,證明生成類成功,可以去路徑下刷新查看。
如有問題,請留言
————————————————————————————————————————————————
堅持總結工作中遇到的技術問題,堅持記錄工作中所思所見。羣中可下載相關資料