最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數(shù)據(jù)庫(kù)CURD必備搭檔mybatis?plus詳解

 更新時(shí)間:2022年05月27日 11:54:45   作者:把蘋果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了數(shù)據(jù)庫(kù)CURD必備搭檔mybatis?plus詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、什么是mybatis-plus

做開(kāi)發(fā),免不了對(duì)數(shù)據(jù)進(jìn)行增刪改查,那么mybatis-plus我覺(jué)得很適合我這個(gè)java新手,簡(jiǎn)單好用。
官網(wǎng)在這

MyBatis-Plus(簡(jiǎn)稱 MP),是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增強(qiáng) 不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生。
任何能使用mybatis進(jìn)行crud,并且支持標(biāo)準(zhǔn)sql的數(shù)據(jù)庫(kù),mp都可以勝任。

二、特性

  • 無(wú)侵入: 只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎ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)置代碼生成器: 采用代碼或者M(jìn)aven插件可快速生成Mapper 、Model 、Service 、Controller層代碼,支持模板引擎,更有超多自定義配置
  • 內(nèi)置分頁(yè)插件: 基于MyBatis物理分頁(yè),開(kāi)發(fā)者無(wú)需關(guān)心具體操作,配置好插件之后,寫分頁(yè)等同于普通List查詢
  • 分頁(yè)插件支持多種數(shù)據(jù)庫(kù): 支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫(kù)
  • 內(nèi)置性能分析插件: 可輸出Sql語(yǔ)句以及其執(zhí)行時(shí)間,建議開(kāi)發(fā)測(cè)試時(shí)啟用該功能,能快速揪出慢查詢
  • 內(nèi)置全局?jǐn)r截插件: 提供全表delete 、update操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作

三、試一試

既然是來(lái)操作數(shù)據(jù)的,那得準(zhǔn)備好數(shù)據(jù)的環(huán)境。

1.建庫(kù)、建表、建數(shù)據(jù)

# 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE mybatis_plus;
# 創(chuàng)建表
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ù)
INSERT INTO user (id, name, age, email) VALUES
(1, 'wesson1', 18, 'pingguotest1@pingguo.com'),
(2, 'wesson2', 19, 'pingguotest1@pingguo.com'),
(3, 'wesson3', 20, 'pingguotest1@pingguo.com'),
(4, 'wesson4', 22, 'pingguotest1@pingguo.com'),
(5, 'wesson5', 20, 'pingguotest1@pingguo.com');

2.idea中創(chuàng)建工程、配置

為了方便,可以新建一個(gè)Spring Initializr工程。

配置pom.xml文件,可以修改下springboot的版本,我們使用穩(wěn)定版的2.2.1.RELEASE。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

接著添加maven依賴。

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--lombok 簡(jiǎn)化實(shí)體類-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>
    </dependencies>

還有,在idea里安裝lombok插件。到settings里plugin下,搜索lombok回車,安裝即可。

3.配置數(shù)據(jù)庫(kù)

找到application.properties文件,路徑如圖所示,

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://XXXXXX:3306/mybatis_plus?characterEncoding=UTF-8&serverTimezone=GMT%2B8
spring.datasource.username=XXXX
spring.datasource.password=XXXXX
#mybatis日志,在控制臺(tái)可以看到操作過(guò)程日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

注意:這里使用的是mysql8,springboot2.1以上的版本,集成了8.0版本的jdbc驅(qū)動(dòng),在url里加上后綴?characterEncoding=UTF-8&serverTimezone=GMT%2B8。
另外,driver-class-name也建議加上cj,com.mysql.cj.jdbc.Driver。因?yàn)橹暗腸om.mysql.jdbc.Driver已經(jīng)廢棄了,運(yùn)行的時(shí)候會(huì)有warning。

4.編寫準(zhǔn)備代碼

在操作之前,還有些準(zhǔn)備代碼需要完成:

entity包下的user.java

package com.pingguo.mpdemo.entity;
import lombok.Data;
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

這里加上@Data注解即可,不要手動(dòng)的編寫set、get、tostring方法了。

mapper包下的UserMapper.java

package com.pingguo.mpdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pingguo.mpdemo.entity.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}

這是一個(gè)mapper接口,我們要繼承BaseMapper,把User實(shí)體傳進(jìn)去,就可以使用crud了。

配置掃描mapper的路徑

在啟動(dòng)類上,加個(gè)注解,mapper的路徑。

package com.pingguo.mpdemo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
// 配置掃描mapper的路徑
@MapperScan("com.pingguo.mpdemo.mapper")
public class MpdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(MpdemoApplication.class, args);
    }
}

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

為了方便,可以直接在單元測(cè)試代碼里進(jìn)行crud操作。

查詢

因?yàn)槭孪任覀冊(cè)诒砝镆呀?jīng)插入了數(shù)據(jù),所以現(xiàn)在可以去把所有數(shù)據(jù)都查出來(lái)。

@SpringBootTest
class MpdemoApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
     void findAll() {
        List<User> users =  userMapper.selectList(null);
        System.out.println(users);
    }
}

因?yàn)槲覀兣渲昧薽ybatis的日志,所以在控制臺(tái)可以看到整個(gè)的操作過(guò)程。

新增、修改、刪除

//    新增
    @Test
    void addUser() {
        User user = new User();
        user.setName("pingguo");
        user.setAge(21);
        user.setEmail("pingguo@pingguo.com");
        userMapper.insert(user);
    }
//    刪除
    @Test
    void deleteUser() {
        userMapper.deleteById(1L);
    }
//    修改
    @Test
    void updateUser() {
        User user = new User();
        user.setId(2L);
        user.setName("修改名稱222");
        userMapper.updateById(user);
    }

新增、刪除、修改也很簡(jiǎn)單,可以通過(guò)日志看下執(zhí)行過(guò)程。

以上就是通過(guò)mp實(shí)現(xiàn)簡(jiǎn)單的增刪改查,很方便,其他內(nèi)容后面繼續(xù),更多關(guān)于mybatis plus數(shù)據(jù)庫(kù)CURD的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享

    Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享

    這篇文章主要為大家詳細(xì)介紹了Spring Boot高級(jí)教程之使用Redis實(shí)現(xiàn)session共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Kotlin null的處理詳解

    Kotlin null的處理詳解

    這篇文章主要介紹了Kotlin null的處理詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java異常Exception詳細(xì)講解

    Java異常Exception詳細(xì)講解

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會(huì)根據(jù)身體情況選擇喝開(kāi)水、吃藥、看病、等?異常處理方法。?java異常處理機(jī)制是我們java語(yǔ)言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力,程序出現(xiàn)的錯(cuò)誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-07-07
  • drools中then部分的寫法(推薦)

    drools中then部分的寫法(推薦)

    本文介紹一下drools中then部分的寫法,以及一些內(nèi)置的方法,比如insert/delete/modify等等。同時(shí)也介紹一下rule的繼承,和在when中實(shí)現(xiàn)if else if?等操作,感興趣的朋友跟隨小編一起看看吧
    2022-05-05
  • java如何用反射將一個(gè)對(duì)象復(fù)制給另一個(gè)對(duì)象

    java如何用反射將一個(gè)對(duì)象復(fù)制給另一個(gè)對(duì)象

    這篇文章主要介紹了java如何用反射將一個(gè)對(duì)象復(fù)制給另一個(gè)對(duì)象問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換

    IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換

    這篇文章主要介紹了IDEA使用GsonFormat完成JSON和JavaBean之間的轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解mybatis中的if-else的嵌套使用

    詳解mybatis中的if-else的嵌套使用

    本文主要介紹了mybatis中的if-else的嵌套使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java本地高性能緩存的幾種常見(jiàn)實(shí)現(xiàn)方式

    Java本地高性能緩存的幾種常見(jiàn)實(shí)現(xiàn)方式

    在Java中緩存是一種常用的性能優(yōu)化技術(shù),用于在應(yīng)用程序中加速訪問(wèn)和查詢數(shù)據(jù)的速度,下面這篇文章主要給大家介紹了關(guān)于Java本地高性能緩存的幾種常見(jiàn)實(shí)現(xiàn)方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Elasticsearch學(xué)習(xí)之Terms?set?查詢

    Elasticsearch學(xué)習(xí)之Terms?set?查詢

    這篇文章主要為大家介紹了Elasticsearch學(xué)習(xí)Terms?set?查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java多線程中的wait與notify方法詳解

    Java多線程中的wait與notify方法詳解

    這篇文章主要介紹了Java多線程中的wait與notify方法詳解,線程的調(diào)度是無(wú)序的,但有些情況要求線程的執(zhí)行是有序的,因此,我們可以使用 wait() 方法來(lái)使線程執(zhí)行有序,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

泽库县| 信丰县| 远安县| 双辽市| 英超| 德保县| 建阳市| 延边| 新龙县| 绍兴市| 金乡县| 阜平县| 诸城市| 昆明市| 武功县| 平利县| 静海县| 新源县| 北川| 石阡县| 西吉县| 浮山县| 报价| 古浪县| 甘德县| 乌兰县| 淮阳县| 舞钢市| SHOW| 曲麻莱县| 昌江| 晋宁县| 武平县| 尚志市| 读书| 南皮县| 澄江县| 监利县| 保定市| 宁远县| 永州市|