溫馨提示×

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

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

Spring Boot 2.x中怎么整合Mybatis-Plus

發(fā)布時(shí)間:2021-07-30 14:10:59 來(lái)源:億速云 閱讀:175 作者:Leah 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Spring Boot 2.x中怎么整合Mybatis-Plus,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

Mybatis-Plus的作用

Spring Boot 2.x中怎么整合Mybatis-Plus

可以看到,它給我們提供了一些核心的功能:代碼生成器和現(xiàn)成的CRUD接口以及可以結(jié)合Lambda的條件構(gòu)造器使我們的代碼變得足夠優(yōu)雅,分頁(yè)的使用也是相當(dāng)?shù)姆奖悖约疤峁┝瞬煌闹麈I生成策略。 如果這些功能不能滿足我們的需求,Mybatis-Plus還提供了豐富的插件供我們?nèi)ナ褂茫覀兘酉聛?lái)只講核心功能,插件的使用會(huì)在后面的文章中進(jìn)行部分的講解,感興趣的同學(xué)可以先去看一下官方的文檔。

使用第一步:引入POM

首先我們需要引入POM,我在這里引用的是最新版本的:

Spring Boot 2.x中怎么整合Mybatis-Plus

接著,如果我們需要使用代碼生成器,需要引入模板引擎的依賴:

Spring Boot 2.x中怎么整合Mybatis-Plus

到此,pom的引入就告一段落,下面我們來(lái)看一下配置文件的編寫:

使用第二步:編寫配置文件

這里我們使用的是application.yml作為配置文件,而非新建Spring Boot 項(xiàng)目默認(rèn)的application.properties,這里如果不會(huì)新建一個(gè)Spring Boot項(xiàng)目,可以去參考本系列教程的第一篇文章

Spring Boot 2.x中怎么整合Mybatis-Plus

在這里可以進(jìn)行打印SQL的配置,便于我們進(jìn)行排查問(wèn)題。

使用第三步:建表

Spring Boot 2.x中怎么整合Mybatis-Plus

使用第四步:使用代碼生成器

直接貼出我的代碼生成器代碼:

public class MpGenerator {
    public static void main(String[] args) {
        GlobalConfig config = new GlobalConfig();
        String dbUrl = "jdbc:mysql://localhost:3306/viboot?useSSL=false";
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(dbUrl)
                .setUsername("root")
                .setPassword("Passw0rd")
                .setDriverName("com.mysql.cj.jdbc.Driver");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig
                .setCapitalMode(true)
                //這里結(jié)合了Lombok,所以設(shè)置為true,如果沒(méi)有集成Lombok,可以設(shè)置為false
                .setEntityLombokModel(true)
                .setNaming(NamingStrategy.underline_to_camel);
        //這里因?yàn)槲沂嵌嗄K項(xiàng)目,所以需要加上子模塊的名稱,以便直接生成到該目錄下,如果是單模塊項(xiàng)目,可以將后面的去掉
        String projectPath = System.getProperty("user.dir") + "/viboot-mybatis-plus";
        // 自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
            }
        };
        // 如果模板引擎是 freemarker
        String templatePath = "/templates/mapper.xml.ftl";
        // 如果模板引擎是 velocity
        // String templatePath = "/templates/mapper.xml.vm";

        // 自定義輸出配置
        List<fileoutconfig> focList = new ArrayList&lt;&gt;();
        // 自定義配置會(huì)被優(yōu)先輸出
        focList.add(new FileOutConfig(templatePath) {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定義輸出文件名
                return projectPath + "/src/main/resources/mapper/" + "user"
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });

        cfg.setFileOutConfigList(focList);

        //設(shè)置作者,輸出路徑,是否重寫等屬性
        config.setActiveRecord(false)
                .setEnableCache(false)
                .setAuthor("viyoung")
                .setOutputDir(projectPath + "/src/main/java")
                .setFileOverride(true)
                .setServiceName("%sService");
        new AutoGenerator()
                .setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setTemplateEngine(new FreemarkerTemplateEngine())
                .setCfg(cfg)
                //這里進(jìn)行包名的設(shè)置
                .setPackageInfo(
                        new PackageConfig()
                                .setParent("indi.viyoung.viboot.mybatis")
                                .setController("controller")
                                .setEntity("entity")
                                .setMapper("mapper")
                                .setServiceImpl("service.impl")
                                .setService("service")
                ).execute();
    }
}

下面我們來(lái)運(yùn)行main方法,就可以看到生成的包:

Spring Boot 2.x中怎么整合Mybatis-Plus

mapper包下面xml包刪掉,因?yàn)槲覀円呀?jīng)在resources中生成了*mapper.xml文件。 這里需要注意,需要在SpringBoot的啟動(dòng)類上配置MapperScan來(lái)幫助我們?nèi)フ业匠志脤咏涌诘奈恢谩?/p>

Spring Boot 2.x中怎么整合Mybatis-Plus

使用第四步:編寫查詢列表進(jìn)行測(cè)試

Spring Boot 2.x中怎么整合Mybatis-Plus

沒(méi)錯(cuò),我們只需要寫一行代碼就可以獲取到我們想要的列表,下面我們來(lái)訪問(wèn)一下

Spring Boot 2.x中怎么整合Mybatis-Plus

IService與BaseMapper

有些人可能會(huì)好奇,為什么我們只需要在controller層中直接去調(diào)用就可以獲得到列表,這是因?yàn)?code>Mybatis-Plus給我們封裝了一系列的CRUD的基礎(chǔ)接口,在通過(guò)代碼生成器生成的UserService接口實(shí)際上是繼承了IService接口的,而UserServiceImpl則是繼承ServiceImpl,所以就可以獲取到一些基礎(chǔ)的實(shí)現(xiàn)。

Spring Boot 2.x中怎么整合Mybatis-Plus

Spring Boot 2.x中怎么整合Mybatis-Plus

IService則給我們提供了以下方法來(lái)實(shí)現(xiàn)基礎(chǔ)的CRUD:

Spring Boot 2.x中怎么整合Mybatis-Plus

同樣的,BaseMapper接口也提供了一些實(shí)現(xiàn):

Spring Boot 2.x中怎么整合Mybatis-Plus

通過(guò)這些基礎(chǔ)的實(shí)現(xiàn),我們可以完成日常中大部分的基礎(chǔ)查詢,而省去了編寫Service和ServiceImpl的時(shí)間,從編碼效率上來(lái)講比起JPA更勝一籌。

條件構(gòu)造器

條件構(gòu)造器可以構(gòu)造一些查詢條件來(lái)獲取我們指定的值,同時(shí)可以結(jié)合Lambda表達(dá)式來(lái)使用,下面我們直接來(lái)編寫兩個(gè)例子:

Spring Boot 2.x中怎么整合Mybatis-Plus

Spring Boot 2.x中怎么整合Mybatis-Plus

可以看到,被注釋掉的部分是不使用Lambda表達(dá)式的寫法,這樣的寫法存在魔法值,而且會(huì)由于粗心寫錯(cuò)column的名稱而導(dǎo)致錯(cuò)誤,但是使用Lambda表達(dá)式就足夠直觀的可以看出我們是想查詢出userName = ?的數(shù)據(jù),下面,我們來(lái)運(yùn)行一下,看看結(jié)果是否符合我們預(yù)期的那樣

Spring Boot 2.x中怎么整合Mybatis-Plus

當(dāng)然,條件構(gòu)造器的用法還有許許多多,這里就不在一一羅列,有需要的同學(xué)可以去官網(wǎng)查看文檔

分頁(yè)查詢

如果我們需要分頁(yè)查詢數(shù)據(jù)去渲染表格,可以使用Mybatis-Plus自帶的分頁(yè)插件:

Spring Boot 2.x中怎么整合Mybatis-Plus

在啟動(dòng)類中加入上面的代碼,然后我們就可以去使用分頁(yè)了:

Spring Boot 2.x中怎么整合Mybatis-Plus

我們只需要構(gòu)建一個(gè)Page對(duì)象,并初始化我們所需的頁(yè)數(shù)(page)和每頁(yè)數(shù)據(jù)量(pageSize),然后將其作為page()方法的參數(shù)傳入即可 下面,我們來(lái)訪問(wèn)一下:

Spring Boot 2.x中怎么整合Mybatis-Plus

關(guān)于Spring Boot 2.x中怎么整合Mybatis-Plus就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

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

AI