mybatis逆向工程-MyBatis Generator Core使用


0.mybatis逆向工程說明

MyBatis 框架需要:實體類、⾃定義 Mapper 接⼝、Mapper.xml
傳統的開發中上述的三個組件需要開發者⼿動創建,逆向⼯程可以幫助開發者來⾃動創建三個組件,減
輕開發者的⼯作量,提⾼⼯作效率。

1.創建maven工程並且導入相關的依賴

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>

mybatis,mysql驅動等等需要自行導入.

2.創建逆向工程配置文件

在resource目錄下創建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>
    <context id="testTables" targetRuntime="MyBatis3">
        <!-- 1、jdbcConnection 配置數據庫連接信息。-->
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useUnicode=true&amp; characterEncoding=utf-8&amp; useSSL=false"
                userId="root"
                password="123456"
        ></jdbcConnection>
        <!--2、javaModelGenerator 配置 JavaBean(實體類) 的⽣成策略。targetPackage:實體類所在的包 targetProject:創建包的位置-->
        <javaModelGenerator targetPackage="com.yue.pojo"
                            targetProject="./src/main/java"></javaModelGenerator>
        <!--3、sqlMapGenerator 配置 SQL 映射⽂件⽣成策略。-->
        <sqlMapGenerator targetPackage="com.yue.dao"
                         targetProject="./src/main/java"></sqlMapGenerator>
        <!--4、javaClientGenerator 配置 Mapper 接⼝的⽣成策略。-->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.yue.dao" targetProject="./src/main/java">
        </javaClientGenerator>
        <!--5、table 配置⽬標數據表(tableName:表名,domainObjectName:JavaBean 類名)。-->
        <table tableName="user" domainObjectName="User"></table>
    </context>

</generatorConfiguration>

3.創建執行類

package com.yue.test;

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;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

//獲取到配置文件並解析,都是固定代碼,copy即可
public class Main {
    public static void main(String[] args) {
        List<String> warings = new ArrayList<String>();
        boolean overwrite = true;
        String genCig = "/generatorConfig.xml"; //獲取到配置文件
        File configFile = new File(Main.class.getResource(genCig).getFile());
        ConfigurationParser configurationParser = new
                ConfigurationParser(warings);
        Configuration configuration = null;
        try {
            configuration = configurationParser.parseConfiguration(configFile);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XMLParserException e) {
            e.printStackTrace();
        }
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = null;
        try {
            myBatisGenerator = new
                    MyBatisGenerator(configuration, callback, warings);
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
        }
        try {
            myBatisGenerator.generate(null);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

4.執行

在這里插入圖片描述
發現已經自動生成了我們需要的代碼

如果報錯1
Establishing SSL connection without server's identity verification is not recommended. 

在generatorConfig.xml的url中加入useSSL=false即可
如果報錯2
XML Parser Error on line 10: 對實體 "characterEncoding" 的引用必須以 ';' 分

將generatorConfig.xml的url中的&amp;符號使用替換掉即可
connectionURL="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&amp;useUnicode=true&amp; characterEncoding=utf-8&amp; useSSL=false"             
如果報錯3
Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.mybatis.generator.internal.ObjectFactory.internalClassForName(ObjectFactory.java:148)
	at org.mybatis.generator.internal.ObjectFactory.externalClassForName(ObjectFactory.java:119)
	at org.mybatis.generator.internal.JDBCConnectionFactory.getDriver(JDBCConnectionFactory.java:97)
	... 6 more

檢查自己mysql驅動包的版本,我的mysql版本為8.0
如果程序運行沒有報錯,但是卻沒有自動生成代碼

那么檢查一下自己生成代碼的路徑是否寫錯 targetProject="./src/main/java".


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM