欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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裁剪壓縮PNG圖片,透明背景色變黑的解決方案

    Java裁剪壓縮PNG圖片,透明背景色變黑的解決方案

    這篇文章主要介紹了Java裁剪壓縮PNG圖片,透明背景色變黑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中的ProcessBuilder類詳細(xì)解析

    Java中的ProcessBuilder類詳細(xì)解析

    這篇文章主要介紹了Java中的ProcessBuilder類詳細(xì)解析,ProcessBuilder類是J2SE 1.5在java.lang中新添加的一個(gè)新類,此類用于創(chuàng)建操作系統(tǒng)進(jìn)程,它提供一種啟動(dòng)和管理進(jìn)程的方法,需要的朋友可以參考下
    2024-01-01
  • Java設(shè)計(jì)模式之訪問(wèn)者模式

    Java設(shè)計(jì)模式之訪問(wèn)者模式

    這篇文章介紹了Java設(shè)計(jì)模式之訪問(wèn)者模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC打印@RequestBody、@Response日志的方法

    這篇文章主要介紹了Spring MVC打印@RequestBody、@Response日志的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Java8中Stream?API的peek()方法詳解及需要注意的坑

    Java8中Stream?API的peek()方法詳解及需要注意的坑

    這篇文章主要給大家介紹了關(guān)于Java8中Stream?API的peek()方法詳解及需要注意的坑,Java 中的 peek 方法是 Java 8 中的 Stream API 中的一個(gè)方法,它屬于中間操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Python機(jī)器學(xué)習(xí)三大件之二pandas

    Python機(jī)器學(xué)習(xí)三大件之二pandas

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)三大件之二pandas,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • mybatis-plus getOne和邏輯刪除問(wèn)題詳解

    mybatis-plus getOne和邏輯刪除問(wèn)題詳解

    這篇文章主要介紹了mybatis-plus getOne和邏輯刪除,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解

    Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Spring事務(wù)失效的原因及解決方案

    Spring事務(wù)失效的原因及解決方案

    本文主要介紹了Spring事務(wù)失效的原因及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢

    Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢

    網(wǎng)上找了不少負(fù)載均衡算法的資源,都不夠全面,后來(lái)自己結(jié)合了網(wǎng)上的一些算法實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論