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

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

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

1.前言

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

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

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

2.1. mybatis-generator生成

2.1.1. 環(huán)境說(shuō)明

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

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

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

--若已存在,先刪除
drop table user 
-- 創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù)表
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依賴(lài)

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

 <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ù)庫(kù)連接配置

依賴(lài)與數(shù)據(jù)庫(kù)表創(chuàng)建好之后,我們就正式進(jìn)入了springboot項(xiàng)目中進(jìn)行逆向工程開(kāi)發(fā)啦,首先在resources目錄下創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接的配置文件: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ù)庫(kù)配置完成后,我們緊接著來(lái)設(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ù)庫(kù)表信息-->
    <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ù)庫(kù)連接-->
        <jdbcConnection driverClass="${jdbc.driverClass}"
                        connectionURL="${jdbc.connectionURL}"
                        userId="${jdbc.userId}"
                        password="${jdbc.password}">
            <!--解決mysql驅(qū)動(dòng)升級(jí)到8.0后不生成指定數(shù)據(jù)庫(kù)代碼的問(wèn)題-->
            <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è)表,寫(xiě)具體表名,否則生成全部表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í)體類(lèi)注釋配置

由于在上一步我們配置了注釋生成器,因此,我們要在相應(yīng)的路徑下,創(chuàng)建一個(gè)類(lèi),來(lái)自定義注釋的生成規(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è)置用戶(hù)配置的參數(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) {
        //文檔注釋開(kāi)始
        field.addJavaDocLine("/**");
        //獲取數(shù)據(jù)庫(kù)字段的備注信息
        String[] remarkLines = remarks.split(System.getProperty("line.separator"));
        for (String remarkLine : remarkLines) {
            field.addJavaDocLine(" * " + remarkLine);
        }
        addJavadocTag(field, false);
        field.addJavaDocLine(" */");
    }
}

2.1.7 使用生成器

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

public class Generator {
    public static void main(String[] args) throws Exception {
        //MBG 執(zhí)行過(guò)程中的警告信息
        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ù)庫(kù)中的表進(jìn)行逆向工程的創(chuàng)建,大量的減少了我們的重復(fù)性工作,但是!它的實(shí)現(xiàn)還是比較復(fù)雜的,generatorConfiguration配置中的內(nèi)容豐富且復(fù)雜,比較難記,而且在原有代碼中需要寫(xiě)一定的代碼量才能實(shí)現(xiàn)。

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

2.2.1 下載IDEA插件

在插件管理中下載MybatisX插件

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

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

 2.2.3 配置maven依賴(lài)

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

2.2.4 配置生成規(guī)則 

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

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

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

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

3.總結(jié)

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測(cè)有效,可激活至 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包中文亂碼解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)論

京山县| 崇礼县| 灌南县| 思南县| 云霄县| 永善县| 锡林浩特市| 菏泽市| 荔浦县| 醴陵市| 屏东县| 佛山市| 河间市| 多伦县| 淮安市| 长宁区| 辉县市| 江门市| 富平县| 禄丰县| 佛坪县| 商都县| 普洱| 广德县| 安庆市| 江都市| 闸北区| 岳西县| 吴桥县| 定日县| 淳化县| 香河县| 康定县| 敦化市| 寻甸| 泸水县| 万年县| 平山县| 雷山县| 辽宁省| 贞丰县|