myBatis逆向工程的使用

使用myBatis Generator能夠快速生成實體類、dao類和mapper文件。有兩種方式,如今說的是比較靈活的方式。本文栗子使用的是IDEA,目錄結構爲maven項目的結構。

1.在pom.xml文件中加入myBatis Generator須要的jar包

<!-- mybatis核心包 -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.3.0</version>
</dependency>
<!-- mybatis-generator-core 反向生成java代碼-->
<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.3.5</version>
</dependency>複製代碼

2.寫相關的配置文件,mbgConfiguration.xml和jdbc.properties;

mbgConfiguration.xml配置文件代碼以下:
java

<?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">
<!-- 第一種mybatis逆向生成xml配置 -->
<generatorConfiguration>
    <properties resource="jdbc.properties" />
    <context id="sqlserverTables" targetRuntime="MyBatis3">
        <!-- 生成的pojo,將implements Serializable-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
        <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!-- 數據庫連接URL、用戶名、密碼 -->
        <jdbcConnection driverClass="${jdbc.driverClassName}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}">
        </jdbcConnection>

        <!--
        默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer
            true,把JDBC DECIMAL 和 NUMERIC 類型解析爲java.math.BigDecimal
        -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!--
        生成model模型,對應的包路徑,以及文件存放路徑(targetProject),targetProject能夠指定具體的路徑,如./src/main/java,
        也能夠使用「MAVEN」來自動生成,這樣生成的代碼會在target/generatord-source目錄下
        -->
        <!--<javaModelGenerator targetPackage="com.joey.mybaties.test.pojo" targetProject="MAVEN">-->
        <javaModelGenerator targetPackage="com.niit.test.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <!-- 從數據庫返回的值被清理先後的空格  -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--對應的mapper.xml文件  -->
        <sqlMapGenerator targetPackage="com.niit.test.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 對應的Mapper接口類文件 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.niit.test.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <!-- 列出要生成代碼的全部表,這裏配置的是不生成Example文件 -->
        <table tableName="tb_user" domainObjectName="UserInfo"
               enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false" >
            <property name="useActualColumnNames" value="false"/>
        </table>
    </context>
</generatorConfiguration>複製代碼

jdbc.properties文件以下:
mysql

####################### DB Connection Config #######################
###----------------- DB Type -----------------
databaseType=mysql
###----------------- MySQL5+ -----------------
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tb_mybatis?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=12321
複製代碼

3.寫GenMain類文件;

package com.niit.test.main;

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;

/**
 * Created by Audrey on 2018/11/19 17:05
 */
public class GenMain {
    public static void main(String[] args) {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        String genCfg = "/mbgConfiguration.xml";
        File configFile = new File(GenMain.class.getResource(genCfg).getFile());
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = null;
        try {
            config = cp.parseConfiguration(configFile);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XMLParserException e) {
            e.printStackTrace();
        }
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = null;
        try {
            myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        } 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.運行GenMain類文件,便可生成實體類、dao類和mapper文件。

每次修改數據庫時,均可以把原來生成的文件刪掉,從新運行GenMain文件從新生成。sql

相關文章
相關標籤/搜索