1. 程式人生 > 實用技巧 >mybatis開發 —— 快速生成開發程式碼

mybatis開發 —— 快速生成開發程式碼

一,mybatis example 形式程式碼

編寫 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>
    <!-- 資料庫驅動包位置 -->
    <!-- <classPathEntry location="D:\software\lib\mysql-connector-java-5.1.21.jar" /> -->
    <classPathEntry location="C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar" />
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!-- 資料庫連結URL、使用者名稱、密碼 -->
        <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/sy" userId="sypro" password="sypro"> -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="msa" password="msa">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成模型的包名和位置 -->
        <javaModelGenerator targetPackage="sy.model" targetProject="D:\study\mybatis\src">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成的對映檔案包名和位置 -->
        <sqlMapGenerator targetPackage="sy.mapping" targetProject="D:\study\mybatis\src">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="sy.dao" targetProject="D:\study\mybatis\src">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->
        <table tableName="tbug" domainObjectName="Bug" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

    </context>
</generatorConfiguration>

配置好上述檔案之後,開啟CMD命令列 ,java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

連結: https://pan.baidu.com/s/1aXR9dd_DfHAHG-86ipCxrA 提取碼: k7bp

記得這些檔案需要放在沒有中文的資料夾路徑,否則會報錯,上述的src資料夾,為generator.xml配置的src位置。這樣子即可一鍵生成mapper,model,example的程式碼。

二,mybatisplusWrapper condition形式程式碼

pom引入需要的包

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-support</artifactId>
            <version>2.3.3</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
package com.infore.saas.filepreview;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;


/**
 * 程式碼生成器
 * ps:只需要配置前面的靜態引數,即可生成程式碼
 */
public class MpGenerator {

    /**
     * mysql IP
     */
    private static String MYSQL_IP = "127.0.0.1";

    /**
     * mysql 埠
     */
    private static String MYSQL_PORT = "3306";

    /**
     * mysql 資料庫名稱
     */
    private static String MYSQL_DATABASE = "demo";

    /**
     * mysql 表名稱
     */
    private static String MYSQL_TABLE_NAME = "student";

    /**
     * mysql 使用者名稱
     */
    private static String MYSQL_USER_NAME = "root";

    /**
     * mysql 密碼
     */
    private static String MYSQL_USER_PASSWORD = "123456";

    /**
     * 包名
     */
    private static String JAVA_PACKAGE_NAME = "com.lawliet.system";

    /**
     * 生成檔案地址
     */
    private static String FILE_ADDRESS = "D:\\code";

    /**
     * 作者名稱
     */
    private static String AUTHOR_NAME = "Lawliet";

    /**
     * 業務類是否以I開頭
     */
    private static boolean JAVA_SERVICE_NAME_START_WITH_I = false;

    /**
     * 生成原始碼方法
     *
     * @param serviceNameStartWithI 業務類是否以I開頭
     * @param packageName           包名
     * @param tableNames            表名
     */
    private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) {
        GlobalConfig config = new GlobalConfig();
        String dbUrl = String.format("jdbc:mysql://%s:%s/%s", MYSQL_IP, MYSQL_PORT, MYSQL_DATABASE);
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername(MYSQL_USER_NAME)
                .setPassword(MYSQL_USER_PASSWORD)
                .setDriverName("com.mysql.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                .setEntityLombokModel(false)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(tableNames);//修改替換成你需要的表名,多個表名傳陣列
        config.setActiveRecord(false)
                .setAuthor(AUTHOR_NAME)
                .setOutputDir(FILE_ADDRESS)
                .setFileOverride(true)
                .setEnableCache(false)// XML 二級快取
                .setBaseResultMap(true)// XML ResultMap
                .setBaseColumnList(true)// XML columList
        ;
        if (!serviceNameStartWithI) {
            config.setServiceName("%sService");
        }
        new AutoGenerator().setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(
                        new PackageConfig()
                                .setParent(packageName)
                                //.setController("controller")
                                .setEntity("model")
                ).execute();
    }

    /**
     * 完成上面引數配置即可執行該main方法生成原始碼
     */
    public static void main(String[] args) {
        System.out.println("-- 服務啟動,正在初始化....");
        new MpGenerator().generateByTables(JAVA_SERVICE_NAME_START_WITH_I, JAVA_PACKAGE_NAME, MYSQL_TABLE_NAME);
        System.out.println("-- " + MYSQL_TABLE_NAME + "相關的mapper,model,service生成成功。");
    }
}

mybatisplus 更加簡單,將上述程式碼進行main函式執行即可生成各個模組的程式碼。