mybatis逆向工程-MyBatis Generator Core使用

时间:2020-04-14
本文章向大家介绍mybatis逆向工程-MyBatis Generator Core使用,主要包括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".

原文地址:https://www.cnblogs.com/yue1234/p/12700117.html