zoukankan      html  css  js  c++  java
  • Mybatis 逆向工程

    1、简介

      可以根据 数据库中的表 ,生成对应的 POJO、sql映射文件等。简化了一些操作。当然复杂的操作需要自己手动编写。

    官方文档:http://mybatis.org/generator/

    2、使用

    step1:前提条件。
      数据库:mysql。
      表:emp,dept。

    【表emp】
    CREATE TABLE emp(
        id int primary key auto_increment,
        name varchar(50),
        salary double,
        age int,
        d_id int
    );
    
    【表dept】
    CREATE TABLE dept(
        id int primary key auto_increment,
        name varchar(50)
    );
    
    【dept的主键 是emp 的外键】
    ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(d_id) REFERENCES dept(id);

    step2:导入包(mybatis-generator-core  以及  mysql-connector-java-8.0.18.jar)。

    【地址:】
    https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core
    https://mvnrepository.com/artifact/mysql/mysql-connector-java
    
    【使用 maven 的依赖信息如下:】
    
    <!-- 逆向工程所需的依赖信息 -->
    <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
    </dependency>
    
    
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>

    step3:编写配置文件

    【mybatis-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>
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!-- step1: 配置数据库连接信息 -->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/lyh"
                            userId="root"
                            password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- step2: 指定java bean生成的位置
                targetProject 指的是 哪个项目
                targetPackage 指的是 项目中的路径
            -->
            <javaModelGenerator targetPackage="com.lyh.bean" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!-- step3:指定sql映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="com.lyh.mapper" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!-- step4: 指定接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.lyh.dao" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- step5: 指定表的生成策略
                tableName 指定表名
                domainObjectName 指定表对应的 实体类的名字
            -->
            <table tableName="emp" domainObjectName="Employee"></table>
            <table tableName="dept" domainObjectName="Department"></table>
        </context>
    </generatorConfiguration>

    step4:编写运行类

    【com.lyh.test.TestMybatisGenerator】
    package com.lyh.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 TestMybatisGenerator {
        public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
            File configFile = new File("src//mybatis-generator.xml");
            System.out.println(configFile);
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        }
    }

    step5:运行类的截图
    初始截图:


    运行后截图:(带注释)

      

    step6: 去除注释

    【上面截图中都带有注释信息,若想去除,需添加如下配置信息】
    <!-- 清除注释信息 -->
    <commentGenerator>
        <property name="suppressAllComments" value="true" />
    </commentGenerator>
    
    
    【mybatis-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>
        <context id="DB2Tables" targetRuntime="MyBatis3">
            <!-- 清除注释信息 -->
            <commentGenerator>
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
    
            <!-- step1: 配置数据库连接信息 -->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://localhost:3306/lyh"
                            userId="root"
                            password="123456">
            </jdbcConnection>
    
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!-- step2: 指定java bean生成的位置
                targetProject 指的是 哪个项目
                targetPackage 指的是 项目中的路径
            -->
            <javaModelGenerator targetPackage="com.lyh.bean" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!-- step3:指定sql映射文件生成的位置 -->
            <sqlMapGenerator targetPackage="com.lyh.mapper" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!-- step4: 指定接口生成的位置 -->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.lyh.dao" targetProject=".src">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- step5: 指定表的生成策略
                tableName 指定表名
                domainObjectName 指定表对应的 实体类的名字
            -->
            <table tableName="emp" domainObjectName="Employee"></table>
            <table tableName="dept" domainObjectName="Department"></table>
        </context>
    </generatorConfiguration>

  • 相关阅读:
    选择排序
    迭代器使用过程中为什么抛出ConcurrentModificationException
    自定义实现的ArrayList以及自定义实现的Iterator迭代器
    单链表
    collections方法记录
    JDK1.9中关于集合的新方法
    请使用时间相关的API,计算一个人从出生到现在一共活了多少天?
    java中对象的向上转型和向下转型
    异常相关知识整理
    可变参数相关知识
  • 原文地址:https://www.cnblogs.com/huoyz/p/14375861.html
Copyright © 2011-2022 走看看