MyBatisPlus入門實(shí)戰(zhàn)(SpringBoot)

MyBatisPlus入門實(shí)戰(zhàn)(SpringBoot)

一不撑、概述

Mybatis是一個(gè)很火的輕量級(jí)的持久層框架。通常需要寫xml文件惊豺,編寫SQL就可方便的去操作數(shù)據(jù)庫燎孟。對(duì)于操作數(shù)據(jù)庫的工具來說很是靈活,這里不過多贅述了尸昧。

Mybatis-Plus(簡(jiǎn)稱MP)是Mybatis的增強(qiáng)工具揩页,對(duì)Mybatis只做增強(qiáng)不做修改。有更高的效率。

內(nèi)部有封裝常用的CURD操作爆侣,可達(dá)到調(diào)用方法操作數(shù)據(jù)庫萍程,而無需寫SQL語句。

下面就是實(shí)戰(zhàn)去體驗(yàn)Plus的對(duì)于單表CRUD的高效兔仰。

二茫负、實(shí)戰(zhàn)使用

1、環(huán)境

  • SpringBoot
  • Mysql
  • MybatisPlus

2乎赴、數(shù)據(jù)&代碼說明

創(chuàng)建一個(gè)名為user的數(shù)據(jù)庫:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `own_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'JoJo', '23', '1215135@jojo.com');
INSERT INTO `user` VALUES (2, 'kit', '22', '63362@kit.com');
INSERT INTO `user` VALUES (23, 'bii', '22', '354643@bii.com');

SET FOREIGN_KEY_CHECKS = 1;

3忍法、實(shí)戰(zhàn)運(yùn)行

1-導(dǎo)入依賴

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

2-配置數(shù)據(jù)庫

# 配置數(shù)據(jù)源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: root
    password: 12345
    url: jdbc:mysql:///test

3-編寫對(duì)應(yīng)數(shù)據(jù)庫的實(shí)體類User

@Data
@TableName("user") // 表名的映射
public class UserPO {
    // 指定id,id的類型
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    // 指定字段名的映射
    @TableField("name")
    private String name;

     // 指定字段名的映射
    @TableField("age")
    private String age;

     // 指定字段名的映射
    @TableField("own_email")
    private String Email;
}

實(shí)體類使用了lombok簡(jiǎn)化書寫

4-編寫Mapper

/**
 * @author Hacah
 * @date 2021/5/19 10:00
 */
public interface UserMapper extends BaseMapper<UserPO> {
}

繼承Mybatis-Plus的BaseMapper

5-編寫測(cè)試代碼

@Autowired
private UserMapper userMapper;

@Test
void contextLoads() {

    List<UserPO> userPOS = userMapper.selectList(null);
    System.out.println(userPOS);

}

結(jié)果:

[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]

4榕吼、CRUD的操作方法介紹

1-查詢

查詢一條:
1.slelectByOne

通過id查詢一條數(shù)據(jù)饿序。

// 1.查詢一個(gè)
UserPO userPO = userMapper.selectById(1);
System.out.println(userPO);

結(jié)果:

UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com)
2.selectOne

通過條件查詢一條數(shù)據(jù),若查詢條數(shù)多于1條會(huì)報(bào)錯(cuò)羹蚣。

// 2.使用條件查詢一個(gè)
QueryWrapper<UserPO> userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.eq("age", "22"); // SQL上增加age = 22條件
System.out.println(userMapper.selectOne(userPOQueryWrapper));
// SELECT id,name,age,own_email AS Email FROM user WHERE age = 22; 

QueryWrapper類能夠構(gòu)造查詢的條件

QueryWrapper

這是拼接條件的類原探,傳入該類可以構(gòu)造sql的操作的條件

比如or、and顽素、= 咽弦、between... in..等等

查詢多條
1.selectByMap

通過Map查詢多條數(shù)據(jù)。

// 3.使用map查詢多條數(shù)據(jù)
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("age", 22);
System.out.println(userMapper.selectByMap(stringObjectHashMap));

結(jié)果:

[UserPO(id=2, name=kit, age=22, Email=63362@kit.com), 
 UserPO(id=3, name=bii, age=22, Email=354643@bii.com)]
2.selectBatchIds

通過id進(jìn)行批量查詢

// 4.使用個(gè)id查詢更多數(shù)據(jù)
ArrayList<Integer> userPOS = new ArrayList<>();
userPOS.add(1);
userPOS.add(2);
System.out.println(userMapper.selectBatchIds(userPOS));

結(jié)果:

[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), 
 UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]

2-新增

1.update

傳入一個(gè)實(shí)體類新增一條數(shù)據(jù)

 // 5. 新增數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setAge("12");
userPO.setName("fibs");
userPO.setEmail("5332633@fibs.com");
userMapper.insert(userPO);

結(jié)果:

3-修改

1.updateById

通過id更新胁出,傳入一個(gè)實(shí)體類

 // 6.修改數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setId(1);
userPO.setAge("31");
userMapper.updateById(userPO);

結(jié)果:

2.update

傳入一個(gè) 實(shí)體類 和 條件類型型,更新數(shù)據(jù)

 // 6.通過條件修改數(shù)據(jù)
UserPO userPO = new UserPO();
userPO.setAge("31");

QueryWrapper<UserPO> userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.isNotNull("age"); // 構(gòu)造條件where age != null

userMapper.update(userPO,userPOQueryWrapper);

結(jié)果:

age不為null的全部修改成31

4-刪除

刪除和select類似,有一下方法:

  • deleteById 通過id刪除

  • deleteByMap 使用map刪除

  • delete 通過條件刪除

  • deleteBatchIds 通過id批量刪除


這里只演示delete全蝶,使用條件刪除數(shù)據(jù)

刪除id小于等于1的數(shù)據(jù)

userMapper.delete(new QueryWrapper<UserPO>().le("id",1));

結(jié)果:

三输莺、總結(jié)

本博客是一個(gè)入門的描述。先大概了解MybatisPlus的增強(qiáng)之處裸诽,并通過實(shí)踐去體會(huì),去認(rèn)證它的運(yùn)行結(jié)果型凳。讓我們對(duì)此生映像丈冬,以便后續(xù)的使用,解決我們后續(xù)遇到的問題就是我們一直學(xué)習(xí)的目的甘畅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末埂蕊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疏唾,更是在濱河造成了極大的恐慌蓄氧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槐脏,死亡現(xiàn)場(chǎng)離奇詭異喉童,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)顿天,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門堂氯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔑担,“玉大人,你說我怎么就攤上這事咽白∑∥眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵晶框,是天一觀的道長(zhǎng)排抬。 經(jīng)常有香客問我,道長(zhǎng)授段,這世上最難降的妖魔是什么蹲蒲? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮畴蒲,結(jié)果婚禮上悠鞍,老公的妹妹穿的比我還像新娘。我一直安慰自己模燥,他們只是感情好咖祭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔫骂,像睡著了一般么翰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辽旋,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天浩嫌,我揣著相機(jī)與錄音,去河邊找鬼补胚。 笑死码耐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溶其。 我是一名探鬼主播骚腥,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瓶逃!你這毒婦竟也來了束铭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤厢绝,失蹤者是張志新(化名)和其女友劉穎契沫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昔汉,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懈万,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钞速。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贷掖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渴语,到底是詐尸還是另有隱情苹威,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布驾凶,位于F島的核電站牙甫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏调违。R本人自食惡果不足惜窟哺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望技肩。 院中可真熱鬧且轨,春花似錦、人聲如沸虚婿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽然痊。三九已至至朗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剧浸,已是汗流浹背锹引。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唆香,地道東北人嫌变。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躬它,于是被迫代替她去往敵國和親初澎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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