最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis逆向工程筆記小結(jié)

 更新時(shí)間:2024年05月10日 08:30:26   作者:牽著貓散步的鼠鼠  
MyBatis官方為我們提供了一個(gè)逆向工程,通過這個(gè)逆向工程,只需要建立好數(shù)據(jù)表,MyBatis就會(huì)根據(jù)這個(gè)表自動(dòng)生成pojo類、mapper接口、sql映射文件,本文主要介紹了Mybatis逆向工程筆記小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下

1.前言

我們在開發(fā)傳統(tǒng)的Maven項(xiàng)目或者SpringBoot項(xiàng)目過程中,最終處理的就是對(duì)于數(shù)據(jù)的讀與存,這時(shí)就免不了寫對(duì)象關(guān)系映射代碼,實(shí)體類、mapper、mapper.xml等代碼,若存在大量的增刪改查功能的話,我們開發(fā)時(shí)就會(huì)不斷重復(fù)相同的操作,大大降低了工作效率。

為此便但成了Mybatis “逆向工程” ,所謂逆向工程,就是從數(shù)據(jù)庫表結(jié)構(gòu)出發(fā),反向去生成對(duì)應(yīng)的實(shí)體和映射代碼,今天我們在這里提供2種方案進(jìn)行實(shí)現(xiàn)。

2.實(shí)現(xiàn)方案

2.1. mybatis-generator生成

2.1.1. 環(huán)境說明

1)springboot 項(xiàng)目(JDK1.8)
2)apache-maven-3.6.1
3)MySQL 8.0.30

2.1.2. 數(shù)據(jù)庫表

逆向工程的第一步,需要先有數(shù)據(jù)庫表結(jié)構(gòu)!我們在這里先創(chuàng)建一個(gè)表,作為示例使用,sql腳本如下:

--若已存在,先刪除
drop table user 
-- 創(chuàng)建數(shù)據(jù)庫用戶表
create table user (
	id int NOT NULL AUTO_INCREMENT COMMENT '主鍵',
	name varchar(100) DEFAULT NULL COMMENT '員工姓名',
	phone_num varchar(20) DEFAULT NULL COMMENT '聯(lián)系方式',
	address varchar(200) DEFAULT NULL COMMENT '住址',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

2.1.3 添加Maven依賴

逆向工程的實(shí)現(xiàn),需要先引入mybatis相關(guān)依賴,如果項(xiàng)目中已經(jīng)引入過,可自動(dòng)忽略這一步。我們主要需要mybatis,mysql基礎(chǔ)依賴,以及mybatis提供的生成器依賴

 <dependencies>
        <!-- mybatis-generator -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.1.4 數(shù)據(jù)庫連接配置

依賴與數(shù)據(jù)庫表創(chuàng)建好之后,我們就正式進(jìn)入了springboot項(xiàng)目中進(jìn)行逆向工程開發(fā)啦,首先在resources目錄下創(chuàng)建一個(gè)數(shù)據(jù)庫連接的配置文件:generator.properties

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/vhr?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
jdbc.userId=root
jdbc.password=123456

2.1.5 配置生成規(guī)則

數(shù)據(jù)庫配置完成后,我們緊接著來設(shè)置一個(gè)生成規(guī)則,包括編碼,生成文件路徑、是否設(shè)置自定義注釋等等,這個(gè)配置可以從網(wǎng)上搜,有很多generatorConfiguration的配置。直接CV稍作修改即可

<?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>
    <!--根據(jù)配置文件讀取數(shù)據(jù)庫表信息-->
    <properties resource="generator.properties"/>
    <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
        <!--前置分隔符-->
        <property name="beginningDelimiter" value="`"/>
        <!--后置分隔符-->
        <property name="endingDelimiter" value="`"/>
        <!--設(shè)置編碼-->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!-- 為模型生成序列化方法-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <!-- 為生成的Java模型創(chuàng)建一個(gè)toString方法 -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <!--生成mapper.xml時(shí)覆蓋原文件-->
        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
        <!--可以自定義生成model的代碼注釋-->
        <commentGenerator type="org.javaboy.vhr.utils.CommentGenerator">
            <!-- 是否去除自動(dòng)生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
            <property name="suppressDate" value="true"/>
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>
        <!--配置數(shù)據(jù)庫連接-->
        <jdbcConnection driverClass="${jdbc.driverClass}"
                        connectionURL="${jdbc.connectionURL}"
                        userId="${jdbc.userId}"
                        password="${jdbc.password}">
            <!--解決mysql驅(qū)動(dòng)升級(jí)到8.0后不生成指定數(shù)據(jù)庫代碼的問題-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>
        <!--指定生成model的路徑-->
        <javaModelGenerator targetPackage="org.javaboy.vhr.pojo" targetProject="vhr-web\src\main\java"/>
        <!--指定生成mapper.xml的路徑-->
        <sqlMapGenerator targetPackage="mybatis.mapper" targetProject="vhr-web\src\main\resources"/>
        <!--指定生成mapper接口的的路徑-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="org.javaboy.vhr.mapper"
                             targetProject="vhr-web\src\main\java"/>
        <!--單獨(dú)生成某個(gè)表,寫具體表名,否則生成全部表tableName設(shè)為%-->
        <table tableName="user" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false">
            <property name="useActualColumnNames" value="false"/>
            <property name="constructorBased" value="false"/>
            <generatedKey column="id" sqlStatement="JDBC" identity="true"/>
        </table>

    </context>
</generatorConfiguration>

2.1.6 自定義實(shí)體類注釋配置

由于在上一步我們配置了注釋生成器,因此,我們要在相應(yīng)的路徑下,創(chuàng)建一個(gè)類,來自定義注釋的生成規(guī)則。路徑:org.javaboy.vhr.utils.CommentGenerator

<commentGenerator type="org.javaboy.vhr.utils.CommentGenerator">
    <!-- 是否去除自動(dòng)生成的注釋 true:是 : false:否 -->
    <property name="suppressAllComments" value="true"/>
    <property name="suppressDate" value="true"/>
    <property name="addRemarkComments" value="true"/>
</commentGenerator>

CommentGenerator代碼

**
 * @author 86138
 * @date 2024-05-01 13:27:15
 * @description 添加自定義注釋
 */
public class CommentGenerator extends DefaultCommentGenerator {
    private boolean addRemarkComments = false;

    /**
     * 設(shè)置用戶配置的參數(shù)
     */
    @Override
    public void addConfigurationProperties(Properties properties) {
        super.addConfigurationProperties(properties);
        this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
    }

    /**
     * 給字段添加注釋
     */
    @Override
    public void addFieldComment(Field field, IntrospectedTable introspectedTable,
                                IntrospectedColumn introspectedColumn) {
        String remarks = introspectedColumn.getRemarks();
        //根據(jù)參數(shù)和備注信息判斷是否添加備注信息
        if (addRemarkComments && StringUtility.stringHasValue(remarks)) {
            addFieldJavaDoc(field, remarks);
        }
    }

    /**
     * 給model的字段添加注釋
     */
    private void addFieldJavaDoc(Field field, String remarks) {
        //文檔注釋開始
        field.addJavaDocLine("/**");
        //獲取數(shù)據(jù)庫字段的備注信息
        String[] remarkLines = remarks.split(System.getProperty("line.separator"));
        for (String remarkLine : remarkLines) {
            field.addJavaDocLine(" * " + remarkLine);
        }
        addJavadocTag(field, false);
        field.addJavaDocLine(" */");
    }
}

2.1.7 使用生成器

以上步驟做完后,我們就要寫我們的逆向工程生成器啦,調(diào)用org.mybatis.generator.api中的MyBatisGenerator生成器進(jìn)行實(shí)現(xiàn)。注意:當(dāng)生成的代碼重復(fù)時(shí),覆蓋原代碼!直接執(zhí)行下述Generator類的main方法,就會(huì)自動(dòng)讀取數(shù)據(jù)庫中的表,并生成對(duì)應(yīng)的實(shí)體類與映射

public class Generator {
    public static void main(String[] args) throws Exception {
        //MBG 執(zhí)行過程中的警告信息
        List<String> warnings = new ArrayList<String>();
        //當(dāng)生成的代碼重復(fù)時(shí),覆蓋原代碼
        boolean overwrite = true;
        //讀取我們的 MBG 配置文件
        InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(is);
        is.close();

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        //創(chuàng)建 MBG
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        //執(zhí)行生成代碼
        myBatisGenerator.generate(null);
        //輸出警告信息
        for (String warning : warnings) {
            System.out.println(warning);
        }
    }
}

2.2. MybatisX插件生成(推薦)

基于方案一,我們可以快速的根據(jù)數(shù)據(jù)庫中的表進(jìn)行逆向工程的創(chuàng)建,大量的減少了我們的重復(fù)性工作,但是!它的實(shí)現(xiàn)還是比較復(fù)雜的,generatorConfiguration配置中的內(nèi)容豐富且復(fù)雜,比較難記,而且在原有代碼中需要寫一定的代碼量才能實(shí)現(xiàn)。

接下來我們要說的這種方案二,幾乎不用寫任何代碼,只需要點(diǎn)點(diǎn)點(diǎn)就可以實(shí)現(xiàn)逆向工程啦,如果你使用idea的話,這種方案尤其方便。

2.2.1 下載IDEA插件

在插件管理中下載MybatisX插件

2.2.2 配置數(shù)據(jù)源

在idea的database中配置數(shù)據(jù)源,這里以MySQL為例,需要注意時(shí)區(qū)的配置。

 2.2.3 配置maven依賴

<!--lombok依賴-->
 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
 </dependency>
 <!--MyBatis Plus依賴-->
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.1.0</version>
 </dependency>

2.2.4 配置生成規(guī)則 

打開剛剛配置好的本地?cái)?shù)據(jù)庫,選擇你想構(gòu)建的數(shù)據(jù)表,右鍵 -> MybatisX-Generator。

 選擇項(xiàng)目包路徑、實(shí)體包名、表名;

next后繼續(xù)配置mapper、xml、service的生成路徑以及需要的注釋功能,hashCode/equals、Lombk注解等等。這個(gè)要根據(jù)你項(xiàng)目的實(shí)際情況來選擇 

在上一步的最后配置完成,點(diǎn)擊Finish按鈕,查看結(jié)果,在對(duì)應(yīng)的路徑下成功的生成了我們需要的文件。

3.總結(jié)

這次我們簡單介紹了Mybatis逆向工程的兩種實(shí)現(xiàn)方案,方案一實(shí)現(xiàn)復(fù)雜,但可以滿足基本的增刪改查的實(shí)現(xiàn),博主還是更偏向于第二種哈哈,可視化操作起來比較簡單,大家可以根據(jù)自己的日常開發(fā)場景,進(jìn)行合理選擇。

到此這篇關(guān)于Mybatis逆向工程筆記小結(jié)的文章就介紹到這了,更多相關(guān)Mybatis逆向工程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring MVC獲取查詢參數(shù)及路徑參數(shù)代碼實(shí)例

    Spring MVC獲取查詢參數(shù)及路徑參數(shù)代碼實(shí)例

    這篇文章主要介紹了Spring MVC獲取查詢參數(shù)及路徑參數(shù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java實(shí)現(xiàn)http的Post、Get、代理訪問請(qǐng)求

    java實(shí)現(xiàn)http的Post、Get、代理訪問請(qǐng)求

    這篇文章主要為大家提供了java實(shí)現(xiàn)http的Post、Get、代理訪問請(qǐng)求的相關(guān)代碼,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java 單例模式的實(shí)現(xiàn)資料整理

    Java 單例模式的實(shí)現(xiàn)資料整理

    這篇文章主要介紹了Java 單例模式的實(shí)現(xiàn)的相關(guān)資料,并附簡單實(shí)例代碼,需要的朋友可以參考下
    2016-10-10
  • IDEA 2020 無法啟動(dòng)的解決辦法(啟動(dòng)崩盤)附IDEA 2020 新功能

    IDEA 2020 無法啟動(dòng)的解決辦法(啟動(dòng)崩盤)附IDEA 2020 新功能

    這篇文章主要介紹了IDEA 2020 無法啟動(dòng)的解決辦法(啟動(dòng)崩盤)附IDEA 2020 新功能,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java中的分布式事務(wù)Seata詳解

    Java中的分布式事務(wù)Seata詳解

    這篇文章主要介紹了Java中的分布式事務(wù)Seata詳解,Seata 是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡單易用的分布式事務(wù)服務(wù),Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務(wù)模式,為用戶打造一站式的分布式解決方案,需要的朋友可以參考下
    2023-08-08
  • 在idea中創(chuàng)建SpringBoot項(xiàng)目

    在idea中創(chuàng)建SpringBoot項(xiàng)目

    這篇文章主要介紹了在idea中創(chuàng)建SpringBoot項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • IntelliJ IDEA 2020最新激活碼(親測有效,可激活至 2089 年)

    IntelliJ IDEA 2020最新激活碼(親測有效,可激活至 2089 年

    這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測有效,可激活至 2089 年),非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Springboot實(shí)現(xiàn)MQTT通信的示例代碼

    Springboot實(shí)現(xiàn)MQTT通信的示例代碼

    本文主要介紹了Springboot實(shí)現(xiàn)MQTT通信的示例代碼,包含了MQTT協(xié)議的特點(diǎn)和工作原理等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • Maven發(fā)布Jar包中文亂碼解決方法

    Maven發(fā)布Jar包中文亂碼解決方法

    這篇文章主要介紹了Maven發(fā)布Jar包中文亂碼解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Elasticsearch算分優(yōu)化方案之rescore_query示例詳解

    Elasticsearch算分優(yōu)化方案之rescore_query示例詳解

    這篇文章主要為大家介紹了Elasticsearch算分優(yōu)化方案之rescore_query示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論

安图县| 遂平县| 衢州市| 柳林县| 永川市| 家居| 庆安县| 广南县| 张家界市| 南涧| 阿拉善盟| 萝北县| 弋阳县| 临沂市| 嘉禾县| 佳木斯市| 西城区| 府谷县| 陇川县| 达日县| 木里| 吴堡县| 永丰县| 沙湾县| 台东县| 周口市| 渭源县| 武宁县| 错那县| 新野县| 静安区| 鹤山市| 肇州县| 新邵县| 逊克县| 禹州市| 多伦县| 涟源市| 永德县| 金门县| 五家渠市|