mybatis逆向工程

来源:https://www.cnblogs.com/smfx1314/archive/2018/03/07/8520301.html
-Advertisement-
Play Games

原文鏈接:https://www.cnblogs.com/shanheyongmu/p/5863961.html 1. 什麼是逆向工程 mybatis的一個主要的特點就是需要程式員自己編寫sql,那麼如果表太多的話,難免會很麻煩,所以mybatis官方提供了一個逆向工程,可以針對單表自動生成myba ...


原文鏈接:https://www.cnblogs.com/shanheyongmu/p/5863961.html

1. 什麼是逆向工程

  mybatis的一個主要的特點就是需要程式員自己編寫sql,那麼如果表太多的話,難免會很麻煩,所以mybatis官方提供了一個逆向工程,可以針對單表自動生成mybatis執行所需要的代碼(包括mapper.xml、mapper.Java、po..)。一般在開發中,常用的逆向工程方式是通過資料庫的表生成代碼。

2. 使用逆向工程

  使用mybatis的逆向工程,需要導入逆向工程的jar包,我用的是mybatis-generator-core-1.3.2,已經上傳到下載頻道了(點我下載),下麵開始總結一下mybatis逆向工程的使用步驟。

2.1 新建一個工程(重要)

  我們要新建一個java工程,這個工程專門用來使用逆向工程生成代碼的。有些人可能會問,為什麼要新建一個工程呢?直接在原來工程中你想生成不就可以了麽?確實是這樣,可以在原來的工程中生成,但是有風險,因為mybatis是根據配置文件來生成的(下麵會說到),如果生成的路徑中有相同的文件,那麼就會覆蓋原來的文件,這樣會有風險。所以開發中一般都會新建一個java工程來生成,然後將生成的文件拷貝到自己的工程中,這也不麻煩,而且很安全。如下: 
逆向工程 
  從上圖中看,1就是要執行的java代碼,執行它即可生成我們需要的代碼;2是執行過程中新建的包,這個包都可以在4的配置文件中指定,最好是跟我們自己項目的包名一致,後面就可以直接拷貝了,就不需要修改包名了;3就是jar包咯;4是配置文件。下麵會詳細分析。

2.1 生成代碼的配置文件

  mybatis逆向工程生成代碼需要一個配置文件,名字隨便起。然後mybatis會根據這個配置文件中的配置,生成相應的代碼。下載好了jar包後,裡面有幫助文檔,打開後裡面有配置文件的模板,這裡就不再贅述了,下麵先把配置文件寫好:

 

複製代碼
<?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">
        <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--資料庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
            password="root">
        </jdbcConnection>
        <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
            userId="yycg"
            password="yycg">
        </jdbcConnection> -->

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

        <!-- targetProject:生成PO類的位置,重要!! -->
        <javaModelGenerator targetPackage="mybatis.po"
            targetProject=".\src">
            <!-- enableSubPackages:是否讓schema作為包的尾碼 -->
            <property name="enableSubPackages" value="false" />
            <!-- 從資料庫返回的值被清理前後的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置,重要!! -->
        <sqlMapGenerator targetPackage="mybatis.mapper" 
            targetProject=".\src">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper介面生成的位置,重要!! -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="mybatis.mapper" 
            targetProject=".\src">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定資料庫表,要生成哪些表,就寫哪些表,要和資料庫中對應,不能寫錯! -->
        <table tableName="items"></table>
        <table tableName="orders"></table>
        <table tableName="orderdetail"></table>
        <table tableName="user"></table>        
    </context>
</generatorConfiguration>
複製代碼

 

 從上面的配置文件中可以看出,配置文件主要要做的幾件事是:

  1. 連接資料庫,這是必須的,要不然怎麼根據資料庫的表生成代碼呢?
  2. 指定要生成代碼的位置,要生成的代碼包括po類, mapper.xml和mapper.java
  3. 指定資料庫中想要生成哪些表

2.3 執行生成程式

  配置文件搞好了,然後就執行以下生成程式即可生成了,生成的java程式,下載的逆向工程文檔中都有示例,如下:

 

複製代碼
public class GeneratorSqlmap {

    public void generator() throws Exception{

        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指向逆向工程配置文件
        File configFile = new File("generatorConfig.xml"); 
        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);

    } 
    public static void main(String[] args) throws Exception {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
複製代碼

 

運行一下即可,運行完了後刷新一下工程,就可以看到最新生成的代碼了。 
生成的代碼 
  這裡可以看出有個細節,每個po類多了一個東西,就是xxxExample.java,這個類是給用戶自定義sql是用的,後面我會提到。到這裡就生成好了,下麵我們就把生成的代碼拷貝到自己的工程使用了,為了簡便,這裡我就拷貝ItemsMapper.java/ItemsMapper.xml/Items.java/ItemsExample.java這一類的,其他都一樣。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、架構的定義 所謂一千個架構師中有一千種“最好的架構”模式。 “架構”是我們這行業種一個很常見的詞,表明其必然也是經歷了很長的歲月打磨所形成的一個詞。架構的這個詞出現的意義是什麼?為瞭解決什麼問題?只有把這2個問題想明白了,才能設計出一個良好的項目架構。 我認為 架構類似於畫房屋設計圖,在剛開始我 ...
  • 反射基礎 在應用反射機制之前,首先我們先來看一下如何獲取一個對象對應的反射類Class,在Java中我們有三種方法可以獲取一個對象的反射類。 通過getClass方法 在Java中,每一個Object都有一個getClass()方法,通過getClass方法我們可以獲取到這個對象對應的反射類: 1 ...
  • 上一篇聊了聊批處理的缺點,對於無界數據來說, 流處理 會是更好的選擇,“流”指的是隨著時間的推移逐步增加的數據。消息隊列可以將這些流組織起來,快速的在應用程式中給予反饋。但是消息隊列與傳統的資料庫之間又存在著“剪不斷,理還亂”的“糾葛”,最後我們將探討通過消息隊列之中與時序有關的一些問題。 文件是批 ...
  • 這篇短文主要介紹 的集群和用 反向代理實現 負載均衡。 1、首先需要對一些知識點進行掃盲(對自己進行掃盲,囧): + 集群(Cluster) 簡單來說就是用N台伺服器構成一個松耦合的多處理器系統(對外是一個伺服器),內部通過網路實現通信。讓N台伺服器之間相互協作,共同承載一個網站的請求壓力。用知乎上 ...
  • Flask是一個輕量級的Web服務程式,它簡單、易用、靈活,這裡主要用來做一些API服務。 1. 相關鏈接 GitHub:https://github.com/pallets/flask 官方文檔:http://flask.pocoo.org 中文文檔:http://docs.jinkan.org/ ...
  • 2018-03-07 一、什麼是變數 變數的定義是: 用來命名一個數據的標示符1949 這是一個數字,代表某年如果要命名這個數字,在java里就會寫成: int 是數據類型,表示是整數year 是一個標識符= 是賦值操作符1949 是一個數字類型的值; 表示該行結束year 這個標識符就是一個變數, ...
  • 在網上找個很多的答案,但我的問題沒有解決,睡一晚上後,被我誤打誤撞地解決了,獻給遇到同樣問題的朋友。 方法一(eclipse): 網上大神的回答: 自己寫的程式是不建議用com.sun這個玩意兒的。。這東西屬於“Deprecated and restricted API”。。 而且各種com.sun ...
  • comparable 介面 Comparable<T> 類型參數:T - 可以與此對象進行比較的那些對象的類型 此介面強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的 compareTo 方法被稱為它的自然比較方法。 實現此介面的對象列表(和數組)可以通過 Collectio ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...