Mybatis学习(3)

MyBatis 框架需要:实体类、自定义 Mapper 接口、Mapper.xml
传统的开发中上述的三个组件需要开发者手动创建,逆向工程可以帮助开发者来自动创建三个组件,减轻开发者的工作量,提高工作效率。

新建maven项目,pom.xml中的依赖

<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>

创建 MBG 配置文件 generatorConfig.xml

1、jdbcConnection 配置数据库连接信息。
2、javaModelGenerator 配置 JavaBean 的生成策略。
3、sqlMapGenerator 配置 SQL 映射文件生成策略。
4、javaClientGenerator 配置 Mapper 接口的生成策略。
5、table 配置目标数据表(tableName:表名,domainObjectName:JavaBean 类名)。

<?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">
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatistest?serverTimezone=UTC&amp;useUnicode=true&amp;character=UTF-8&amp;useSSL=false"
                userId="root"
                password="123456"/>
        <javaModelGenerator targetPackage="org.dawn.entity" targetProject=".\src\main\java"/>
        <sqlMapGenerator targetPackage="org.dawn.repository" targetProject=".\src\main\java"/>
        <javaClientGenerator type="XMLMAPPER" targetPackage="org.dawn.repository" targetProject=".\src\main\java"/>
        <table tableName="t_account" domainObjectName="Account"/>
    </context>
</generatorConfiguration>

在之后测试代码时发现这里有一些问题

1.如果测试最后报错:

closing inbound before receiving peer's close_notify

在<jdbcConnection/>块中的connectionURL后再加上useSSL=false即可

2.如果测试最后报错:

This is not a MyBatis Generator Configuration File

检查文件头是否写错,大小写不能写错了,特别是有一处“MyBatis”的B要大写

创建 Generator 执行类

这部分比较死板,格式整体如下

package org.dawn.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;

public class Main
{
    public static void main(String[] args)
    {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        String genCig = "/generatorConfig.xml";
        File configFile = new File(Main.class.getResource(genCig).getFile());
        ConfigurationParser configurationParser = new ConfigurationParser(warnings);
        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, warnings);
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
        }
        try {
            myBatisGenerator.generate(null);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

上一篇:MySQL5.7更新json类型字段中的某个key的值 函数json_replace()


下一篇:Mybatis逆向工程