溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用代碼生成器自定義Entity

發(fā)布時間:2022-05-21 14:46:31 來源:億速云 閱讀:575 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下如何使用代碼生成器自定義Entity的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    代碼生成器自定義Entity部分注解

    對mybatis-plus代碼生成器的entity模板進行部分自定義

    此文章觀看前提:已經(jīng)能用mybatis-plus自動生成代碼

    前因

    因為原有模板自動生成的entity為下面這樣,表字段為name,age,number,但我想生成圖2的樣子,在每個字段前面添加個注解@ApiModelProperty()

    如何使用代碼生成器自定義Entity

    如何使用代碼生成器自定義Entity

    查找了我的代碼生成器那個配置類

    debug了最后要生成模板的兩句,找到了我的entity的生成模板為/templates/entity.java.ftl(因為模板引擎是freemarker,所以后綴為ftl)

    如何使用代碼生成器自定義Entity

    如何使用代碼生成器自定義Entity

    隨后在templates/entity.java.ftl里

    找到模板生成的代碼,然后在屬性模板前面加上這個代碼

    如何使用代碼生成器自定義Entity

    <#if swagger2>
        @ApiModelProperty(value = "${field.propertyName}",dataType = "${field.propertyType}",required = true)
    </#if>

    還有一點

    記得在配置類中設(shè)置開啟 swagger2 模式

    如何使用代碼生成器自定義Entity

    代碼生成器最新版配置方案

    因為最近寫項目使用到了MyBatis-Plus,所以去官網(wǎng)找到了一個代碼生成器的新版,現(xiàn)在網(wǎng)上能查到的都是之前的舊版生成器代碼,官方提供的快速生成沒有開啟Lombok、RestController還有很多自定義類名的策略。

    新版對依賴版本有要求,適用版本:mybatis-plus-generator 3.5.1 及其以上版本,對歷史版本不兼容!

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.5.1</version>
    </dependency>
    <!--對MyBatisPlus代碼生成器進行支持的模板引擎-->
    <dependency>
         <groupId>org.freemarker</groupId>
         <artifactId>freemarker</artifactId>
         <version>2.3.30</version>
    </dependency>
    <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-boot-starter</artifactId>
         <version>3.5.1</version>
    </dependency>

    本著喜新厭舊的初心,我根據(jù)官方文檔配置了一個新版常用的快速生成器,修改數(shù)據(jù)庫配置并設(shè)計好表之后填入表名直接運行使用就行了,如果要配置詳細的策略請去官網(wǎng)查文檔配置。MyBatis代碼生成器官方文檔 

    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.OutputFile;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    import xyz.tylt.controller.BaseController;
    import java.util.Collections;
    /*
     * MyBatisPlus代碼生成器
     */
    public class CodeGenerator {
        public static void main(String[] args) {
            String drive = "D://";
            String xmlpath = drive + "xyz//resource//mapper";
            String projectPath = System.getProperty("user.dir");
            FastAutoGenerator.create("jdbc:mysql://localhost:3306/databasename?useSSl=ture&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8", "root", "1234")
                    .globalConfig(builder -> {
                        builder.author("tylt6688")// 設(shè)置作者
                                .enableSwagger() // 開啟 swagger 模式
                                .fileOverride() // 覆蓋已生成文件
                                .outputDir(drive); // 指定輸出目錄
                    })
                    .packageConfig(builder -> {
                        builder.parent("xyz.tylt") // 設(shè)置父包名
    //                            .moduleName("system") // 設(shè)置父包模塊名
                                .pathInfo(Collections.singletonMap(OutputFile.mapperXml, xmlpath)); // 設(shè)置mapperXml生成路徑
                    })
                    //實體策略配置
                    .strategyConfig(builder -> {
                        builder.entityBuilder()
                                //開啟Lombok,默認生成@Get,@Set,可以手動換成@Data
                                .enableLombok();
                    })
                    //控制類策略配置
                    .strategyConfig(builder -> {
                        builder.controllerBuilder()
                                 //如果沒有父類請注釋掉
                                .superClass(BaseController.class)
                                .enableRestStyle();
                    })
                    //服務(wù)類策略配置
                    .strategyConfig(builder -> {
                        builder.serviceBuilder()
                                .formatServiceFileName("%sService")
                                .formatServiceImplFileName("%sServiceImp");
                    })
                    .strategyConfig(builder -> {
                        builder.addInclude("tb_teachplan")// 設(shè)置數(shù)據(jù)庫中表名,按其中屬性內(nèi)容進行生成
    //                            .addInclude("tb_floor")
    //                            .addInclude("tb_room")
                                .addTablePrefix("tb_", "c_", "sys_"); // 設(shè)置過濾表前綴進行生成
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默認的是Velocity引擎模板
                    .execute();
        }
    }

    以上就是“如何使用代碼生成器自定義Entity”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI