Mybatis-Plus來學(xué)習(xí)一下!代碼生成匹颤、分頁插件仅孩?

在這里小小推薦下我的個人博客

csdn:雷園的csdn博客

個人博客:雷園的個人博客

簡書:雷園的簡書

今天我們來說一下Mybatis-Plus!

個人認(rèn)為呢,Mybatis-Plus是Mybatis的增強版印蓖,他只是在Mybatis的基礎(chǔ)上增加了功能杠氢,且并未對原有功能進行任何的改動×砦椋可謂是非常良心的一款開源產(chǎn)品鼻百,今天我就來給大家簡單的說一下以下幾個功能,以及代碼實現(xiàn)摆尝。

開始前的準(zhǔn)備

1.我們需要創(chuàng)建一個springboot項目温艇,當(dāng)然mybatis-plus并不僅限于springboot項目,其他項目也可以正常使用堕汞。添加如下依賴:

        <!-- velocity 模板引擎, 默認(rèn) -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <!-- freemarker 模板引擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>
        <!-- lombok插件 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
        </dependency>
        <!-- mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!-- druid 阿里巴巴數(shù)據(jù)源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

2.我們可以在IDEA中添加如下兩個插件方便我們后續(xù)開發(fā)勺爱!lombok以及MybatisX。進入File -> Settings -> Plugins -> Browse Repositories讯检,然后分別搜索即可添加琐鲁。

添加lombok插件以及依賴后,我們的實體類可以這樣寫:

package com.leiyuan.entity;
import lombok.Data;
import lombok.experimental.Accessors;
/**
 * <p>
 * </p>
 * @author 來自底層程序員的仰望
 * @since 2018-11-14
 */
@Data 
public class User{
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    private String email;
    private String phone;
    private String password;
    private Integer age;
    private String sex;
    private Integer state;
}

在添加@Data注解后呢我們可以省略所有封裝方法人灼,這樣即使我們頻繁的改動屬性的類型或者名稱围段,都無需重新生成封裝方法。為我們節(jié)省了大量的時間投放。是不是很方便呢奈泪!

而MybatisX呢是用于Java 與 XML 調(diào)回跳轉(zhuǎn)、Mapper 方法自動生成 XML 灸芳。以前我們在寫mapper的時候呢涝桅,都是在mapper.java中定義好方法,然后手動跳轉(zhuǎn)到mapper.xml中去寫sql烙样。那么在使用了MybatisX之后呢冯遂,我們在編寫mapper.java的時候呢,在左側(cè)可以看到Mybatis的小鳥標(biāo)志谒获。點擊就可以進入到對應(yīng)的方法中蛤肌,也可以使用control+鼠標(biāo)左鍵進行跳轉(zhuǎn)了壁却。并且它會像接口與實現(xiàn)類的關(guān)系,自動為你生成代碼寻定,非常方便。

屏幕快照 2018-11-14 下午2.31.00
屏幕快照 2018-11-14 下午2.31.20

代碼生成

編寫如下測試類或者main方法,并執(zhí)行就可以了:

    public static void main(String[] args) {
        // 代碼生成器
        AutoGenerator mpg = new AutoGenerator();
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("來自底層程序員的仰望");
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);
        // 數(shù)據(jù)源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://yourHost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8");
        dsc.setSchemaName("public");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("yourUsername");
        dsc.setPassword("yourPassword");
        mpg.setDataSource(dsc);
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("yourPackageName");
        mpg.setPackageInfo(pc);
        // 自定義配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // to do nothing
            }
        };
        List<FileOutConfig> focList = new ArrayList<>();
        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定義輸入文件名稱
                return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" +
                        StringPool.DOT_XML;
            }
        });
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);
        mpg.setTemplate(new TemplateConfig().setXml(null));
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 是否啟用lombok
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        // 需要自動生成的表名
        strategy.setInclude("user","center");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }

源碼在官網(wǎng)可以找到精耐,直接復(fù)制粘貼狼速,改一下包名、表名就可以了卦停,是不是非常簡單呢向胡,項目結(jié)構(gòu)如下圖
屏幕快照 2018-11-14 下午2.48.50

自動分頁

1.首先配置分頁插件,編寫配置類PageConfig.java

package com.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.leiyuan.mapper*")
public class PageConfig {
    /**
     * 分頁插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2.在mapper.java中編寫如下接口

// 導(dǎo)包如下:
// import com.baomidou.mybatisplus.core.metadata.IPage;
// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
IPage<User> queryAll(Page page);

3.在mapper.xml中實現(xiàn)普通的查詢語句即可惊完,這里以全查為例

<select id="queryAll" resultType="com.entity.User">
    select * from user
</select>

4.編寫test類進行測試僵芹,在這里我們就省略service層的代碼了。

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMybatisPlusApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void contextLoads() {
        Page<User> userPage = new Page<>();
        // 當(dāng)前頁
        userPage.setCurrent(2);
        // 每頁數(shù)量
        userPage.setSize(2);
        System.out.println(userMapper.queryAll(userPage).getRecords().toString());
    }
}

5.如上便是分頁的代碼啦小槐,與前臺的交互拇派,相信大家沒有問題的,這里就不再贅述了凿跳。

結(jié)束語

非常感謝大家的關(guān)注件豌,文章有任何問題,大家都可以私信或者評論告訴我控嗜,小弟不才只能淺顯的說一些應(yīng)用的方式方法茧彤,底層的東西還要大家自己深入的研究!技術(shù)永無止境疆栏,各位努力T唷!壁顶!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珠洗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子若专,更是在濱河造成了極大的恐慌险污,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件富岳,死亡現(xiàn)場離奇詭異蛔糯,居然都是意外死亡,警方通過查閱死者的電腦和手機窖式,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門蚁飒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人萝喘,你說我怎么就攤上這事淮逻∏戆茫” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵爬早,是天一觀的道長哼丈。 經(jīng)常有香客問我,道長筛严,這世上最難降的妖魔是什么醉旦? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮桨啃,結(jié)果婚禮上车胡,老公的妹妹穿的比我還像新娘。我一直安慰自己照瘾,他們只是感情好匈棘,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著析命,像睡著了一般主卫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹃愤,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天队秩,我揣著相機與錄音,去河邊找鬼昼浦。 笑死馍资,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的关噪。 我是一名探鬼主播鸟蟹,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼使兔!你這毒婦竟也來了建钥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤虐沥,失蹤者是張志新(化名)和其女友劉穎熊经,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欲险,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡镐依,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了天试。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片槐壳。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜每,靈堂內(nèi)的尸體忽然破棺而出务唐,到底是詐尸還是另有隱情雳攘,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布枫笛,位于F島的核電站吨灭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刑巧。R本人自食惡果不足惜喧兄,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望海诲。 院中可真熱鬧繁莹,春花似錦檩互、人聲如沸特幔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚯斯。三九已至,卻和暖如春饵较,著一層夾襖步出監(jiān)牢的瞬間拍嵌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工循诉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留横辆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓茄猫,卻偏偏與公主長得像狈蚤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子划纽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容