【快學(xué)springboot】SpringBoot整合Mybatis Plus

原創(chuàng)聲明

本文首發(fā)于頭條號(hào)【Happyjava】敲街。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的個(gè)人博客:http://blog.happyjava.cn茫因。歡迎轉(zhuǎn)載,但須保留此段聲明橡卤。

mybatis plus簡(jiǎn)介

來(lái)自官方對(duì)于mybatis plus的介紹:MyBatis-Plus(簡(jiǎn)稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具最盅,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)什黑、提高效率而生崎淳。其支持以下特性:

  • 無(wú)侵入:只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響愕把,如絲般順滑
  • 損耗小:?jiǎn)?dòng)即會(huì)自動(dòng)注入基本 CURD拣凹,性能基本無(wú)損耗,直接面向?qū)ο蟛僮?/li>
  • 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper恨豁、通用 Service嚣镜,僅僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器橘蜜,滿足各類使用需求
  • 支持 Lambda 形式調(diào)用:通過(guò) Lambda 表達(dá)式菊匿,方便的編寫各類查詢條件,無(wú)需再擔(dān)心字段寫錯(cuò)
  • 支持主鍵自動(dòng)生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence)计福,可自由配置捧请,完美解決主鍵問(wèn)題
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作
  • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 棒搜、 Model 疹蛉、 Service 、 Controller 層代碼力麸,支持模板引擎可款,更有超多自定義配置等您來(lái)使用
  • 內(nèi)置分頁(yè)插件:基于 MyBatis 物理分頁(yè)育韩,開發(fā)者無(wú)需關(guān)心具體操作,配置好插件之后闺鲸,寫分頁(yè)等同于普通 List 查詢
  • 分頁(yè)插件支持多種數(shù)據(jù)庫(kù):支持 MySQL筋讨、MariaDB、Oracle摸恍、DB2悉罕、H2、HSQL立镶、SQLite壁袄、Postgre、SQLServer2005媚媒、SQLServer 等多種數(shù)據(jù)庫(kù)
  • 內(nèi)置性能分析插件:可輸出 Sql 語(yǔ)句以及其執(zhí)行時(shí)間嗜逻,建議開發(fā)測(cè)試時(shí)啟用該功能,能快速揪出慢查詢
  • 內(nèi)置全局?jǐn)r截插件:提供全表 delete 缭召、 update 操作智能分析阻斷栈顷,也可自定義攔截規(guī)則,預(yù)防誤操作

mybatis plus嵌巷,對(duì)于mybatis的增強(qiáng)不是一點(diǎn)半點(diǎn)的萄凤,這兩者結(jié)合使用,真的可以大幅的提升開發(fā)效率搪哪。目前蛙卤,也有眾多互聯(lián)網(wǎng)公司正在使用mybatis plus。下面噩死,就讓我們快速上手mybatis plus吧颤难。

快速開始

數(shù)據(jù)庫(kù)表(來(lái)自官方文檔):

id name age email
1 Jone 18 test1@baomidou.com
2 Jack 20 test2@baomidou.com
3 Tom 28 test3@baomidou.com
4 Sandy 21 test4@baomidou.com
5 Billie 24 test5@baomidou.com

建表語(yǔ)句:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主鍵ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年齡',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
    PRIMARY KEY (id)
);

數(shù)據(jù):

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

引入依賴

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.1.1</version>
</dependency>

一個(gè)是mysql的依賴,一個(gè)是mybatis-plus的依賴

編寫User.java實(shí)體類

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

UserMapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

快速使用

上面的步驟做完已维,就可以開始使用mybatis plus了行嗤。

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void test1() {
        List<User> users = userMapper.selectList(null);
        users.forEach(e -> {
            System.out.println(e.toString());
        });
    }

}

輸出結(jié)果:

image

通過(guò)注解寫sql

通過(guò)Select Insert Update Delete 注解,可以寫增刪查改語(yǔ)句垛耳,如下:

@Mapper
public interface UserMapper extends BaseMapper<User> {

    @Select("select * from user where id = #{id}")
    User findUserById(int id);

}

通過(guò)xml配置寫sql

通過(guò)xml的方式寫sql的話栅屏,需要先配置xml的位置:

mybatis-plus.mapper-locations=classpath:mappers/*.xml

示例xml配置如下:userMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="happy.mybatisplus.mapper.UserMapper">

    <select id="findUserByName" parameterType="string"
            resultType="happy.mybatisplus.entity.User">
        SELECT * FROM user WHERE name = #{name}
    </select>

</mapper>

這些都屬于mybatis的范疇了,這里就不做過(guò)多介紹堂鲜。

mybatis-plus常用

下面列出一些mybatis-plus中常用的東西:

1栈雳、指定實(shí)體類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名

@TableName(value = "user")

在實(shí)體類與數(shù)據(jù)庫(kù)表明不是對(duì)應(yīng)的情況下使用,如:

@Data
@TableName(value = "user")
public class UserEntity {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

2缔莲、指定字段對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名

@TableField(value = "age")

如:

@Data
@TableName(value = "user")
public class UserEntity {
    private Long id;
    private String name;

    @TableField(value = "age")
    private Integer userAge;
    private String email;
}

3哥纫、插入數(shù)據(jù),得到主鍵

調(diào)用mybatis plus 提供的insert方法痴奏,執(zhí)行后蛀骇,會(huì)把主鍵設(shè)置到入?yún)⒌膇d屬性中厌秒,如下:

image

4、分頁(yè)

配置分頁(yè)插件:

@Bean
public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
}

分頁(yè)示例:

image

總結(jié)

這里演示了springboot快速使用mybatis-plus擅憔,mybatis-plus有非常豐富的用法鸵闪,這里沒(méi)法一一列舉。有興趣的朋友暑诸,可以直接到官方文檔里查看蚌讼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市个榕,隨后出現(xiàn)的幾起案子篡石,更是在濱河造成了極大的恐慌,老刑警劉巖笛洛,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夏志,死亡現(xiàn)場(chǎng)離奇詭異乃坤,居然都是意外死亡苛让,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門湿诊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狱杰,“玉大人,你說(shuō)我怎么就攤上這事厅须》禄” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵朗和,是天一觀的道長(zhǎng)错沽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)眶拉,這世上最難降的妖魔是什么千埃? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮忆植,結(jié)果婚禮上放可,老公的妹妹穿的比我還像新娘。我一直安慰自己朝刊,他們只是感情好耀里,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拾氓,像睡著了一般冯挎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咙鞍,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天织堂,我揣著相機(jī)與錄音叠艳,去河邊找鬼。 笑死易阳,一個(gè)胖子當(dāng)著我的面吹牛附较,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潦俺,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拒课,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了事示?” 一聲冷哼從身側(cè)響起早像,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肖爵,沒(méi)想到半個(gè)月后卢鹦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劝堪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年冀自,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秒啦。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熬粗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出余境,到底是詐尸還是另有隱情驻呐,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布芳来,位于F島的核電站含末,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏即舌。R本人自食惡果不足惜佣盒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侥涵。 院中可真熱鬧沼撕,春花似錦、人聲如沸芜飘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嗦明。三九已至笼沥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奔浅。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工馆纳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汹桦。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓鲁驶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舞骆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钥弯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • Mybatis-Plus簡(jiǎn)介: Mybatis-Plus(簡(jiǎn)稱MP)是一個(gè) Mybatis 的增強(qiáng)工具,在 Myb...
    Radom7閱讀 1,975評(píng)論 2 47
  • MyBatis是目前最流行的JDBC持久層框架督禽,著名的ssm框架中的m脆霎。關(guān)于springboot集成mybatis...
    郭藝賓閱讀 1,206評(píng)論 0 2
  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL狈惫、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評(píng)論 0 4
  • 前言: 關(guān)于mybatis-plus的簡(jiǎn)介以及基本使用睛蛛,我在《mybatis-plus的使用 ------ 入門》...
    貪挽懶月閱讀 161,721評(píng)論 58 178
  • 電影看多了忆肾,難免也有感到膩歪了的時(shí)候。 就小影來(lái)說(shuō)第岖,實(shí)在是太久沒(méi)看過(guò)那種一眼就能勾起欲望的片难菌。 但這一部電影试溯,小影...
    深夜影薦閱讀 979評(píng)論 1 8