溫馨提示×

溫馨提示×

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

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

Spring-Boot如何使用mybatis-plus-gennretor代碼生成器生成代碼+分頁插件

發(fā)布時間:2021-06-30 16:41:33 來源:億速云 閱讀:164 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Spring-Boot如何使用mybatis-plus-gennretor代碼生成器生成代碼+分頁插件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Spring-Boot如何使用mybatis-plus-gennretor代碼生成器生成代碼+分頁插件”吧!

  • 代碼自動生成器

1.導(dǎo)入需要的jar包

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 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.0.6</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <!-- mybatis-plus-generator 代碼生成器jar -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.2</version>
        </dependency>

        <!-- freemarker 模板引型 (倆者選其一) -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>
        <!-- velocity 模板引型 (倆者選其一) -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>

2 . 模板引型的選擇

package com.shi.generator;

import java.util.Scanner;

/**
 * 模板引型的選擇
 */
public class GeneratorTest {

    /**
     * 讀取控制臺內(nèi)容
     */
    public static int scanner() {
        Scanner scanner = new Scanner(System.in);
        String help =
                " ?。〈a生成, 輸入 0 表示使用 Velocity 引擎 ??!" +
                        "\n對照表:" +
                        "\n0 = Velocity 引擎" +
                        "\n1 = Freemarker 引擎" +
                        "\n請輸入:";
        System.out.println(help);
        int slt = 0;
        // 現(xiàn)在有輸入數(shù)據(jù)
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if ("1".equals(ipt)) {
                slt = 1;
            }
        }
        return slt;
    }
}

3 .  案例

package com.shi.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.*;

/**
 * myBatis-Plus 代碼生成器案例
 *   說明:該案例生成了controller ,service,dao,mapper,entity
 *   加入:Lombok(小辣椒),swagger2
 *
 *   *************需要自定義的變量***************
 */
public class MysqlGenerator extends GeneratorTest {

    /**
     * MySQL 生成演示
     */
    public static void main(String[] args) {
        int result = scanner();

        /****************************配置信息********************/
        String[] tableName = new String[] { "large_area","machine_component" };/****************************需要生成的表名********************/
        String outputDir = "D:\\project\\shiTest\\shi_Mybatis_plus2\\src\\main\\java";/****************************輸出的項目目錄********************/
        String moduleName = "marchine";/*****************************模塊名(需要自己指定)**********/
        String parentPackage = "com.shi"; /****************************自定義父包路徑********************/
        String userName = "";/****************************用戶名********************/
        String password = ""; /****************************密碼(url一樣要改)********************/
        String url = "jdbc:mysql://192.168.69.11:3306/shihaifeng?useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=utf8";

//        自定義需要填充的字段
//        List<TableFill> tableFillList = new ArrayList<>();
//        tableFillList.add(new TableFill("large_area", FieldFill.INSERT_UPDATE));

        // 代碼生成器
        AutoGenerator mpg = new AutoGenerator().setGlobalConfig(
                // 全局配置
                new GlobalConfig()
                        .setOutputDir(outputDir)
                        .setFileOverride(true)// 是否覆蓋文件
                        .setActiveRecord(true)// 開啟 activeRecord 模式
                        .setEnableCache(false)// XML 二級緩存
                        .setBaseResultMap(true)// XML ResultMap
                        .setBaseColumnList(true)// XML columList
                        .setIdType(IdType.AUTO)//主鍵生成策略,自增
                        .setSwagger2(true)//生成swagger2注解支持
                        //.setKotlin(true) 是否生成 kotlin 代碼
                        .setAuthor("shiye")
                // 自定義文件命名,注意 %s 會自動填充表實體屬性!
                // .setEntityName("%sEntity");
                // .setMapperName("%sDao")
                // .setXmlName("%sDao")
                // .setServiceName("MP%sService")
                // .setServiceImplName("%sServiceDiy")
                // .setControllerName("%sAction")
        ).setDataSource(
                // 數(shù)據(jù)源配置
                new DataSourceConfig()
                        .setDbType(DbType.MYSQL) // 數(shù)據(jù)庫類型
                        .setTypeConvert(new MySqlTypeConvert() {
                            // 自定義數(shù)據(jù)庫表字段類型轉(zhuǎn)換【可選】
                            @Override
                            public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                                System.out.println("轉(zhuǎn)換類型:" + fieldType);
                                // if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
                                //    return DbColumnType.BOOLEAN;
                                // }
                                return super.processTypeConvert(globalConfig, fieldType);
                            }
                        })
                        .setDriverName("com.mysql.jdbc.Driver")
                        .setUsername(userName)
                        .setPassword(password)
                        .setUrl(url)
        ).setStrategy(
                // 策略配置
                new StrategyConfig()
                         .setCapitalMode(true)// 全局大寫命名
                        // .setDbColumnUnderline(true)//全局下劃線命名
//                        .setTablePrefix(new String[]{"bmd_", "mp_"})// 此處可以修改為您的表前綴
                        .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
                         .setInclude(tableName) // 需要生成的表 如果不指定就生成全部的表
                        // .setExclude(new String[]{"test"}) // 排除生成的表
                        // 自定義實體父類
                        // .setSuperEntityClass("com.baomidou.demo.TestEntity")
                        // 自定義實體,公共字段
//                        .setSuperEntityColumns(new String[]{"test_id"})
//                        .setTableFillList(tableFillList)
//                        .setEntityBooleanColumnRemoveIsPrefix(true)
                // 自定義 mapper 父類
                // .setSuperMapperClass("com.baomidou.demo.TestMapper")
                // 自定義 service 父類
                // .setSuperServiceClass("com.baomidou.demo.TestService")
                // 自定義 service 實現(xiàn)類父類
                // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
                // 自定義 controller 父類
                // .setSuperControllerClass("com.baomidou.demo.TestController")
                // 【實體】是否生成字段常量(默認 false)
                // public static final String ID = "test_id";
                // .setEntityColumnConstant(true)
                // 【實體】是否為構(gòu)建者模型(默認 false)
                // public User setName(String name) {this.name = name; return this;}
                // .setEntityBuilderModel(true)
                // 【實體】是否為lombok模型(默認 false)<a href="https://projectlombok.org/">document</a>
                 .setEntityLombokModel(true)
                // Boolean類型字段是否移除is前綴處理
                // .setEntityBooleanColumnRemoveIsPrefix(true)
                // .setRestControllerStyle(true)
                // .setControllerMappingHyphenStyle(true)
        ).setPackageInfo(
                // 包配置
                new PackageConfig()
                        .setModuleName(moduleName)
                        .setParent(parentPackage)
                        .setController("controller")// 這里是控制器包名,默認web   別的(service,entity...)都可以默認
        ).setCfg(
                // 注入自定義配置,可以在 VM 中使用 cfg.abc 設(shè)置的值

                new InjectionConfig() {
                    @Override
                    public void initMap() {
                        Map<String, Object> map = new HashMap<>();
                        map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                        this.setMap(map);
                    }
                }.setFileOutConfigList(Collections.singletonList(new FileOutConfig(
                        "/templates/mapper.xml" + ((1 == result) ? ".ftl" : ".vm")) {
                    // 自定義輸出文件目錄  指定生成的mapper.xml文件輸出位置
                    @Override
                    public String outputFile(TableInfo tableInfo) {
                        return  "d:\\mapper\\" + tableInfo.getEntityName() + ".xml";
                    }
                }))
        ).setTemplate(
                // 關(guān)閉默認 xml 生成,調(diào)整生成 至 根目錄
                new TemplateConfig().setXml(null)
                // 自定義模板配置,模板可以參考源碼 /mybatis-plus/src/main/resources/template 使用 copy
                // 至您項目 src/main/resources/template 目錄下,模板名稱也可自定義如下配置:
                // .setController("...");
                // .setEntity("...");
                // .setMapper("...");
                // .setXml("...");
                // .setService("...");
                // .setServiceImpl("...");
        );
        // 執(zhí)行生成
        if (1 == result) {
            mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        }
        mpg.execute();

        // 打印注入設(shè)置,這里演示模板里面怎么獲取注入內(nèi)容【可無】
        System.err.println(mpg.getCfg().getMap().get("abc"));
    }

}
  • 分頁插件 

可以參考官網(wǎng)(https://mp.baomidou.com/guide/page.html)

1. 編寫配置文件,初始化分頁插件

/**
 * Spring boot方式
 * @author shfeng
 * @create 2019-07-19 14:25
 */
@EnableTransactionManagement
@Configuration
@MapperScan("com.shi.*.mapper.mapper*")
public class MybatisPlusConfig {

    /**
     * 分頁插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2. 寫測試文件

/**
     * 這是是使用mybaits的分頁功能 但是分頁不是物理分頁需要改進
     * 增加分頁插件 PaginationInterceptor 以后 ,使用的是物理分頁
     */
    @Test
    public void getLargerAraByPage(){
        IPage<LargeArea> page = new Page<>();
        page.setSize(2l);
        page.setCurrent(1l);
        Wrapper<LargeArea> queryWrapper = new QueryWrapper<LargeArea>();
        page = largeAreaMapper.selectPage(page,queryWrapper);
        System.out.println("page = " + page);
    }

到此,相信大家對“Spring-Boot如何使用mybatis-plus-gennretor代碼生成器生成代碼+分頁插件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(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