Mybatis plus無(wú)介紹快使用悦析,CRUD增刪改查基本使用附源碼(一)

@[TOC](Mybatis plus無(wú)介紹快使用肺孤,CRUD增刪改查基本使用附源碼(一))

問(wèn)題背景

因?yàn)閙ybatis plus非常的流行始鱼,雖然平常mybatis generator也夠用了筐咧,但多會(huì)一個(gè)鸯旁,看別人的代碼就輕松一點(diǎn)
注意事項(xiàng):

Mybatis-plus無(wú)介紹快使用霞怀,CRUD增刪改查基本使用附源碼(一)

Mybatis-plus無(wú)介紹快使用备韧,自定義sql語(yǔ)句CRUD增刪改查附源碼(二)

Mybatis-plus無(wú)介紹快使用焙矛,自帶封裝service層的使用附源碼(三)

Mybatis-plus無(wú)介紹快使用,注解的使用(四)

Mybatis-plus無(wú)介紹快使用蛋勺,Wrapper條件構(gòu)造器的使用附源碼(五)

Mybatis-plus無(wú)介紹快使用瓦灶,分頁(yè)插件和樂(lè)觀鎖插件的使用附源碼(六)

Mybatis-plus無(wú)介紹快使用,枚舉變量的使用附源碼(七)

Mybatis-plus無(wú)介紹快使用抱完,多數(shù)據(jù)源的使用(八)

Mybatis-plus無(wú)介紹快使用贼陶,MybatisX自動(dòng)生成代碼插件的使用(九)

Mybatis-plus無(wú)介紹快使用,可繼承通用的基礎(chǔ)實(shí)體類(十)

建庫(kù)建表

1 打開Navicat運(yùn)行以下SQL腳本進(jìn)行建庫(kù)建表

CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; 
use `mybatis_plus`; 
CREATE TABLE `user` ( 
    `id` bigint(20) NOT NULL COMMENT '主鍵ID', 
    `name` varchar(30) DEFAULT NULL COMMENT '姓名', 
    `age` int(11) DEFAULT NULL COMMENT '年齡', 
    `email` varchar(50) DEFAULT NULL COMMENT '郵箱', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2 插入幾條測(cè)試數(shù)據(jù)

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');

項(xiàng)目創(chuàng)建

1 引入pom依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yg</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mybatis-plus</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        <!--<scope>test</scope>-->
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2 使用IDEA連接數(shù)據(jù)庫(kù)


3 右鍵user選擇Scripted Extensions→Generate POJOs.groovy生成數(shù)據(jù)庫(kù)user實(shí)體類



4 刪除set和get,添加@Data注解


package com.yg.mybatisplus.entity;


import lombok.Data;

@Data
public class User {

  private Long id;
  private String name;
  private Integer age;
  private String email;

}

5 創(chuàng)建mapper接口碉怔,集成com.baomidou.mybatisplus.core.mapper.BaseMapper可以使用增刪改查方法

package com.yg.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yg.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;

/**
 * @Author suolong
 * @Date 2022/6/2 17:25
 * @Version 2.0
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

}

6 application.yml配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxx/database?severTimezone=Asia/Shanghai&allowMultiQueries=true&autoReconnect=true&characterEncoding=UTF-8&useUnicode=true&useSSL=false
    username: xxx
    password: 123456

#生成sql日志打印烘贴,一般關(guān)閉
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

7 啟動(dòng)類

package com.yg.mybatisplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.yg.mybatisplus.mapper") //掃描所有的mapper
@SpringBootApplication
public class MybatisPlusApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }

}

8 測(cè)試CRUD增刪改查

package com.yg.mybatisplus;

import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author suolong
 * @Date 2022/6/2 17:42
 * @Version 2.0
 */

@SpringBootTest
public class MybatisPlusTest {

    @Autowired
    UserMapper userMapper;


    @Test
    void selectTest(){
        //全查
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    /**
     * 測(cè)試插入一條數(shù)據(jù)
     * MyBatis-Plus在實(shí)現(xiàn)插入數(shù)據(jù)時(shí),會(huì)默認(rèn)基于雪花算法的策略生成id
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("Vz1");
        user.setAge(211);
        user.setEmail("vz@oz61.cn");
        int result = userMapper.insert(user);
        System.out.println(result > 0 ? "添加成功撮胧!" : "添加失斀白佟!");
        System.out.println("受影響的行數(shù)為:" + result);
        //1527206783590903810(當(dāng)前 id 為雪花算法自動(dòng)生成的id)
        System.out.println("id自動(dòng)獲取" + user.getId());
    }

    /**
     * 測(cè)試根據(jù)id刪除一條數(shù)據(jù)
     */
    @Test
    public void testDeleteById(){
        int result = userMapper.deleteById(1533011356262625282L);
        System.out.println(result > 0 ? "刪除成功芹啥!" : "刪除失敹屠搿!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試通過(guò)id批量刪除數(shù)據(jù)
     */
    @Test
    public void testDeleteBatchIds(){
        List<Long> ids = Arrays.asList(1532349895093833729L,1533012537454157826L,1533012657583161345L);
        int result = userMapper.deleteBatchIds(ids);
        System.out.println(result > 0 ? "刪除成功墓怀!" : "刪除失斊馈!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)Map集合中所設(shè)置的條件刪除數(shù)據(jù)
     */
    @Test
    public void testDeleteByMap(){
        //當(dāng)前演示為根據(jù)name和age刪除數(shù)據(jù)
        //執(zhí)行SQL為:DELETE FROM user WHERE name = ? AND age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("name","Vz1 ");
        map.put("age",211);
        int result = userMapper.deleteByMap(map);
        System.out.println(result > 0 ? "刪除成功傀履!" : "刪除失斒洹!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)id修改用戶信息, 只修改改變的值, 其他信息保持原值
     */
    @Test
    public void testUpdateById(){
        //執(zhí)行SQL為: UPDATE user SET name=?, age=?, email=? WHERE id=?
        User user = new User();
        user.setId(5L);
        user.setEmail("Vz@sina.com");
        int result = userMapper.updateById(user);
        System.out.println(result > 0 ? "修改成功啤呼!" : "修改失斘悦亍呢袱!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)id查詢用戶數(shù)據(jù)
     */
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

    /**
     * 根據(jù)多個(gè)id查詢用戶數(shù)據(jù)
     */
    @Test
    public void testSelectBatchIds(){
        //執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
        List<Long> ids = Arrays.asList(1L,2L,3L);
        List<User> users = userMapper.selectBatchIds(ids);
        users.forEach(System.out::println);
    }

    /**
     * 根據(jù)Map所設(shè)置的條件查詢用戶
     */
    @Test
    public void testSelectByMap(){
        //執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("age",18);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }

}

9 項(xiàng)目目錄


總結(jié)

快使用就是查看CRUD增刪改查怎么用的




作為程序員第 149 篇文章官扣,每次寫一句歌詞記錄一下,看看人生有幾首歌的時(shí)間羞福,wahahaha ...

Lyric: 灰狼啃食著水鹿的骨頭

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惕蹄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子治专,更是在濱河造成了極大的恐慌卖陵,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件张峰,死亡現(xiàn)場(chǎng)離奇詭異泪蔫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)喘批,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門撩荣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人饶深,你說(shuō)我怎么就攤上這事餐曹。” “怎么了敌厘?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵台猴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饱狂,這世上最難降的妖魔是什么曹步? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮休讳,結(jié)果婚禮上箭窜,老公的妹妹穿的比我還像新娘。我一直安慰自己衍腥,他們只是感情好磺樱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婆咸,像睡著了一般竹捉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尚骄,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天块差,我揣著相機(jī)與錄音,去河邊找鬼倔丈。 笑死憨闰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的需五。 我是一名探鬼主播鹉动,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宏邮!你這毒婦竟也來(lái)了泽示?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜜氨,失蹤者是張志新(化名)和其女友劉穎械筛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飒炎,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埋哟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了郎汪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赤赊。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖怒竿,靈堂內(nèi)的尸體忽然破棺而出砍鸠,到底是詐尸還是另有隱情,我是刑警寧澤耕驰,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布爷辱,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饭弓。R本人自食惡果不足惜双饥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弟断。 院中可真熱鬧咏花,春花似錦、人聲如沸阀趴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刘急。三九已至棚菊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叔汁,已是汗流浹背统求。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留据块,地道東北人码邻。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像另假,于是被迫代替她去往敵國(guó)和親像屋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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