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

SpringBoot整合MyBatis Plus實(shí)現(xiàn)基本CRUD與高級(jí)功能

 更新時(shí)間:2024年02月06日 09:37:37   作者:IT·陳寒  
Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強(qiáng)工具,本文將詳細(xì)介紹如何在Spring Boot項(xiàng)目中整合MyBatis Plus,并展示其基本CRUD功能以及高級(jí)功能的實(shí)現(xiàn)方式,需要的朋友可以參考下

1. 引言

Spring Boot是一款用于快速構(gòu)建Spring應(yīng)用程序的框架,而MyBatis Plus是MyBatis的增強(qiáng)工具,提供了許多方便實(shí)用的功能,包括基本CRUD操作、自動(dòng)填充、樂(lè)觀鎖、邏輯刪除等。本文將詳細(xì)介紹如何在Spring Boot項(xiàng)目中整合MyBatis Plus,并展示其基本CRUD功能以及高級(jí)功能的實(shí)現(xiàn)方式。

2. 項(xiàng)目搭建與依賴配置

首先,確保你已經(jīng)搭建好了Spring Boot項(xiàng)目。接下來(lái),我們需要添加MyBatis Plus的依賴。

2.1 添加MyBatis Plus依賴

pom.xml文件中添加以下依賴:

<!-- MyBatis Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

2.2 配置數(shù)據(jù)源與MyBatis Plus

application.propertiesapplication.yml中配置數(shù)據(jù)庫(kù)連接信息和MyBatis Plus的相關(guān)配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: your_username
    password: your_password

mybatis-plus:
  mapper-locations: classpath:mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
  configuration:
    map-underscore-to-camel-case: true

以上配置中,mapper-locations指定了MyBatis Plus的XML映射文件路徑,map-underscore-to-camel-case表示數(shù)據(jù)庫(kù)字段采用下劃線命名,而Java實(shí)體類采用駝峰命名。

3. 實(shí)現(xiàn)基本CRUD功能

3.1 創(chuàng)建實(shí)體類

假設(shè)我們有一個(gè)實(shí)體類User,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的user表:

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.util.Date;

@Data
@TableName("user")
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String username;

    private String password;

    private Integer age;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableLogic
    private Integer deleted;
}

在上述實(shí)體類中,使用了@TableName注解指定了對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名,@TableId表示主鍵,@TableField用于自動(dòng)填充,@TableLogic表示邏輯刪除字段。

3.2 創(chuàng)建Mapper接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

MyBatis Plus提供了BaseMapper接口,通過(guò)繼承該接口,即可獲得常見(jiàn)的CRUD功能,無(wú)需手動(dòng)編寫(xiě)SQL。

3.3 實(shí)現(xiàn)Service層

import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {
}

創(chuàng)建一個(gè)UserService接口,繼承自IService,該接口提供了常用的Service層方法。

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

創(chuàng)建UserServiceImpl類,實(shí)現(xiàn)UserService接口,并繼承自ServiceImpl,實(shí)現(xiàn)了其中的方法。

3.4 控制器實(shí)現(xiàn)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getById(id);
    }

    @GetMapping("/list")
    public List<User> listUsers() {
        return userService.list();
    }

    @PostMapping
    public void addUser(@RequestBody User user) {
        userService.save(user);
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.updateById(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.removeById(id);
    }
}

以上代碼中,通過(guò)注入UserService實(shí)現(xiàn)了基本的CRUD操作的接口。

4. 高級(jí)功能實(shí)現(xiàn)

4.1 自動(dòng)填充功能

MyBatis Plus提供了自動(dòng)填充功能,通過(guò)@TableField注解的fill屬性來(lái)指定填充的時(shí)機(jī),常用的值有FieldFill.INSERTFieldFill.INSERT_UPDATE

@TableField(fill = FieldFill.INSERT)
private Date createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

上述代碼中,createTime字段在插入時(shí)自動(dòng)填充,updateTime字段在插入和更新時(shí)自動(dòng)填充。

4.2 樂(lè)觀鎖功能

MyBatis Plus支持樂(lè)觀鎖的實(shí)現(xiàn),通過(guò)@Version注解在實(shí)體類的版本字段上添加樂(lè)觀鎖。

@Version
private Integer version;

在更新時(shí),MyBatis Plus會(huì)自動(dòng)檢測(cè)版本字段,如果版本號(hào)不匹配,則更新失敗。

4.3 邏輯刪除功能

MyBatis Plus提供了邏輯刪除的功能,通過(guò)@TableLogic注解在實(shí)體類的邏輯刪除字段上添加邏輯刪除標(biāo)記。

@TableLogic
private Integer deleted;

在進(jìn)行邏輯刪除操作時(shí),MyBatis Plus會(huì)更新這個(gè)字段的值,而不是物理刪除記錄。

5. 拓展:MyBatis Plus的其他功能

除了上述介紹的功能外,MyBatis Plus還提供了許多其他強(qiáng)大的功能,如條件構(gòu)造器、分頁(yè)查詢、性能分析、多租戶支持等。以下簡(jiǎn)單介紹一些常用的功能:

5.1 條件構(gòu)造器

MyBatis Plus的條件構(gòu)造器可以輕松構(gòu)建復(fù)雜的查詢條件:

LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery()
    .eq(User::getUsername, "admin")
    .like(User::getPassword, "pass");
List<User> userList = userService.list(wrapper);

5.2 分頁(yè)查詢

MyBatis Plus支持簡(jiǎn)單的分頁(yè)查詢:

IPage<User> page = new Page<>(1, 10);
IPage<User> userPage = userService.page(page, null);
List<User> userList = userPage.getRecords();

5.3 性能分析

MyBatis Plus提供了性能分析插件,可以方便地查看SQL執(zhí)行情況:

# application.yml
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

通過(guò)配置log-impl屬性,可以將SQL輸出到控制臺(tái),方便調(diào)試與優(yōu)化。

6. 總結(jié)

通過(guò)本文的介紹,我們學(xué)習(xí)了如何在Spring Boot項(xiàng)目中整合MyBatis Plus,并實(shí)現(xiàn)了基本的CRUD功能以及高級(jí)功能如自動(dòng)填充、樂(lè)觀鎖、邏輯刪除等。MyBatis Plus的強(qiáng)大功能極大地簡(jiǎn)化了數(shù)據(jù)庫(kù)操作,提高了開(kāi)發(fā)效率。在實(shí)際項(xiàng)目中,根據(jù)具體需求,我們可以更深入地了解MyBatis Plus提供的各種功能,以更好地應(yīng)對(duì)復(fù)雜的業(yè)務(wù)場(chǎng)景。希望通過(guò)本文的學(xué)習(xí),讀者能夠更加熟練地使用Spring Boot和MyBatis Plus進(jìn)行項(xiàng)目開(kāi)發(fā)。

以上就是SpringBoot整合MyBatis Plus實(shí)現(xiàn)基本CRUD與高級(jí)功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合MyBatis Plus的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 入門(mén)圖形用戶界面設(shè)計(jì)之事件處理上

    Java 入門(mén)圖形用戶界面設(shè)計(jì)之事件處理上

    圖形界面(簡(jiǎn)稱GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來(lái)說(shuō)在視覺(jué)上更易于接受,本篇精講Java語(yǔ)言中關(guān)于圖形用戶界面的事件處理
    2022-02-02
  • Windows下后端如何啟動(dòng)SpringBoot的Jar項(xiàng)目

    Windows下后端如何啟動(dòng)SpringBoot的Jar項(xiàng)目

    這篇文章主要介紹了Windows下后端如何啟動(dòng)SpringBoot的Jar項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 詳解SpringMVC Controller介紹及常用注解

    詳解SpringMVC Controller介紹及常用注解

    本篇文章主要介紹了SpringMVC Controller介紹及常用注解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • SpringBoot使用MockMvc進(jìn)行單元測(cè)試的實(shí)例代碼

    SpringBoot使用MockMvc進(jìn)行單元測(cè)試的實(shí)例代碼

    在Spring Boot應(yīng)用程序中,使用MockMvc進(jìn)行單元測(cè)試是一種有效的方式,可以驗(yàn)證控制器的行為和API的正確性,在這篇博客中,我們將介紹如何使用MockMvc對(duì)用戶控制器進(jìn)行測(cè)試,感興趣的朋友可以參考下
    2024-01-01
  • Mybatis plus枚舉處理器的具體使用

    Mybatis plus枚舉處理器的具體使用

    在開(kāi)發(fā)中,數(shù)據(jù)庫(kù)表中的字段很常見(jiàn)會(huì)使用枚舉類型來(lái)表示一些固定的取值范圍,本文主要介紹了Mybatis plus枚舉處理器的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java并發(fā)之搞懂讀寫(xiě)鎖

    Java并發(fā)之搞懂讀寫(xiě)鎖

    這篇文章主要介紹了Java并發(fā)之讀寫(xiě)鎖,文中相關(guān)實(shí)例代碼詳細(xì),測(cè)試可用,具有一定參考價(jià)值,需要的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 詳解IntelliJ IDEA多窗口項(xiàng)目管理技巧

    詳解IntelliJ IDEA多窗口項(xiàng)目管理技巧

    IntelliJ IDEA默認(rèn)每次打開(kāi)項(xiàng)目都會(huì)新建窗口,可通過(guò)設(shè)置強(qiáng)制單窗口多項(xiàng)目切換或默認(rèn)多開(kāi)項(xiàng)目,下面就來(lái)介紹一下IntelliJ IDEA多窗口項(xiàng)目管理技巧,感興趣的可以了解一下
    2025-09-09
  • 解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題

    解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題

    下面小編就為大家?guī)?lái)一篇解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • java基于嵌入式Tomcat的War包啟動(dòng)器

    java基于嵌入式Tomcat的War包啟動(dòng)器

    本文主要介紹了java基于嵌入式Tomcat的War包啟動(dòng)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • kafka運(yùn)維consumer-groups.sh消費(fèi)者組管理

    kafka運(yùn)維consumer-groups.sh消費(fèi)者組管理

    這篇文章主要為大家介紹了kafka運(yùn)維consumer-groups.sh消費(fèi)者組管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

漾濞| 浮梁县| 仁布县| 介休市| 柳州市| 达尔| 和田县| 阿勒泰市| 达日县| 石屏县| 玛曲县| 威信县| 泰宁县| 集贤县| 麟游县| 龙岩市| 青龙| 工布江达县| 米脂县| 汉寿县| 阳高县| 留坝县| 信丰县| 庄浪县| 西丰县| 宁明县| 枣强县| 临颍县| 定日县| 方城县| 岚皋县| 临安市| 荣昌县| 临汾市| 英山县| 安西县| 朝阳县| 永修县| 定陶县| 湘乡市| 祁东县|