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

MyBatis-Plus通用CRUD操作的實現(xiàn)

 更新時間:2024年10月31日 10:47:15   作者:Flying_Fish_Xuan  
MyBatis-Plus是基于MyBatis的增強工具,主要目的是簡化MyBatis的使用并提升開發(fā)效率,它提供了通可以用CRUD操作、分頁插件、多種插件支持、自動代碼生成器等功能,感興趣的可以了解一下

MyBatis-Plus 是在 MyBatis 的基礎(chǔ)上開發(fā)的增強工具,旨在簡化 MyBatis 的使用,提升開發(fā)效率。它為開發(fā)者提供了許多開箱即用的功能,尤其是通用 CRUD 操作,極大地減少了開發(fā)中常見的 CRUD 代碼編寫工作。MyBatis-Plus 通過提供一系列基于注解和模板的通用方法,簡化了數(shù)據(jù)庫操作。

一、MyBatis-Plus 的優(yōu)勢

  • 開箱即用的 CRUD 功能:MyBatis-Plus 提供了通用的 CRUD 方法,開發(fā)者無需手動編寫常見的增刪改查 SQL。
  • 豐富的分頁功能:內(nèi)置分頁插件,支持數(shù)據(jù)庫級別的分頁查詢,性能優(yōu)越。
  • 多種插件支持:提供各種插件支持,如分頁、性能分析、樂觀鎖等,開發(fā)者可以根據(jù)需要進行擴展。
  • 自動代碼生成器:可以根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)自動生成實體類、Mapper 接口、Service 和 Controller 層代碼,大大提高開發(fā)效率。

二、集成 MyBatis-Plus

1. 引入依賴

在 pom.xml 文件中引入 MyBatis-Plus 的依賴:

<dependencies>
    <!-- MyBatis-Plus Starter for Spring Boot -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.1</version>
    </dependency>

    <!-- MySQL 數(shù)據(jù)庫驅(qū)動 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 配置數(shù)據(jù)庫連接

在 application.yml 文件中配置數(shù)據(jù)庫連接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: yourpassword
    driver-class-name: com.mysql.cj.jdbc.Driver

3. 啟動類配置

在 Spring Boot 的啟動類中,需要添加 @MapperScan 注解,指定 Mapper 接口所在的包。

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

@SpringBootApplication
@MapperScan("com.example.demo.mapper") // 掃描 Mapper 接口
public class MyBatisPlusDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyBatisPlusDemoApplication.class, args);
    }
}

三、實體類定義

首先,我們需要定義實體類,它對應數(shù)據(jù)庫中的表結(jié)構(gòu)。MyBatis-Plus 提供了自動生成主鍵的注解 @TableId,并且支持多種主鍵生成策略。

package com.example.demo.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("users") // 對應數(shù)據(jù)庫中的表名
public class User {
    @TableId(type = IdType.AUTO) // 主鍵自增
    private Long id;
    private String name;
    private String email;
}
  • @TableName:指定實體類對應的數(shù)據(jù)庫表名。
  • @TableId:指定主鍵,type = IdType.AUTO 表示主鍵自增。

四、Mapper 接口

MyBatis-Plus 提供了通用的 BaseMapper<T> 接口,用戶只需繼承 BaseMapper,就可以自動擁有常見的 CRUD 操作,無需再手動編寫 SQL。

package com.example.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 這里不需要定義方法,BaseMapper 已經(jīng)提供了常用的 CRUD 操作
}

BaseMapper<T> 中內(nèi)置了大量的 CRUD 方法,開發(fā)者無需再重復編寫增刪改查的 SQL。

五、Service 層

為了進一步分離業(yè)務邏輯,我們可以在 Service 層使用 Mapper 進行數(shù)據(jù)庫操作。通過繼承 MyBatis-Plus 提供的 IService<T> 接口,我們可以輕松地獲得常見的 CRUD 功能。

Service 接口:

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.model.User;

public interface UserService extends IService<User> {
}

Service 實現(xiàn)類:

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    // 這里無需編寫額外代碼,通用 CRUD 功能已經(jīng)由 ServiceImpl 提供
}

通過繼承 ServiceImpl,我們可以快速獲得 CRUD 的操作,無需手動實現(xiàn)。

六、Controller 層

在控制器中,可以調(diào)用 Service 層的方法來處理 HTTP 請求。例如,我們可以實現(xiàn)用戶的增刪改查操作。

package com.example.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

    @Autowired
    private UserService userService;

    // 查詢所有用戶
    @GetMapping
    public List<User> getAllUsers() {
        return userService.list();
    }

    // 根據(jù) ID 查詢用戶
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getById(id);
    }

    // 添加新用戶
    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.save(user);
        return "用戶添加成功";
    }

    // 更新用戶
    @PutMapping("/{id}")
    public String updateUser(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        userService.updateById(user);
        return "用戶更新成功";
    }

    // 刪除用戶
    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userService.removeById(id);
        return "用戶刪除成功";
    }
}

七、通用 CRUD 方法

MyBatis-Plus 內(nèi)置了一系列通用 CRUD 方法,這些方法被 BaseMapper 和 IService 提供。以下是常用的 CRUD 方法:

1. BaseMapper 通用方法

  • int insert(T entity):插入一條記錄。
  • int deleteById(Serializable id):根據(jù) ID 刪除記錄。
  • int updateById(T entity):根據(jù) ID 更新記錄。
  • T selectById(Serializable id):根據(jù) ID 查詢記錄。
  • List<T> selectList(Wrapper<T> queryWrapper):查詢所有記錄。

2. IService 通用方法

  • boolean save(T entity):保存或新增記錄。
  • boolean saveOrUpdate(T entity):保存或更新記錄。
  • boolean removeById(Serializable id):根據(jù) ID 刪除記錄。
  • T getById(Serializable id):根據(jù) ID 查詢記錄。
  • List<T> list():查詢所有記錄。
  • boolean updateById(T entity):根據(jù) ID 更新記錄。

八、條件構(gòu)造器

MyBatis-Plus 提供了強大的 條件構(gòu)造器,可以通過 QueryWrapper 和 UpdateWrapper 靈活地構(gòu)建查詢條件,避免手動拼接 SQL 語句。

示例:根據(jù)條件查詢

@GetMapping("/search")
public List<User> searchUsers(@RequestParam String name, @RequestParam String email) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("name", name).eq("email", email);
    return userService.list(queryWrapper);
}

示例:根據(jù)條件更新

@PutMapping("/update")
public String updateUserByCondition(@RequestBody User user) {
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("email", user.getEmail());
    userService.update(user, updateWrapper);
    return "用戶更新成功";
}

通過條件構(gòu)造器,MyBatis-Plus 提供了鏈式操作來實現(xiàn)復雜的條件查詢和更新,大大簡化了 SQL 拼接的工作。

九、分頁查詢

MyBatis-Plus 通過分頁插件支持數(shù)據(jù)庫級別的分頁查詢,開發(fā)者無需再手動編寫分頁邏輯。

添加分頁插件

首先,在 Spring Boot 配置類中添加分頁插件:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import

 org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

使用分頁查詢

@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam int pageNo, @RequestParam int pageSize) {
    Page<User> page = new Page<>(pageNo, pageSize);
    return userService.page(page);
}

MyBatis-Plus 自動處理分頁參數(shù),并返回分頁結(jié)果。

十、總結(jié)

MyBatis-Plus 極大地簡化了 MyBatis 的使用,通過提供通用 CRUD 方法、分頁插件、條件構(gòu)造器等功能,大大減少了樣板代碼的編寫。在實際開發(fā)中,MyBatis-Plus 提供了高效的開發(fā)體驗,適合在多種場景下快速實現(xiàn)數(shù)據(jù)庫操作。

到此這篇關(guān)于MyBatis-Plus通用CRUD操作的實現(xiàn)的文章就介紹到這了,更多相關(guān)MyBatis-Plus通用CRUD操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理解析

    Spring Boot 文件上傳原理其實就是Spring MVC,因為這部分工作是Spring MVC做的而不是Spring Boot,那么,SpringMVC又是怎么處理文件上傳這個過程的呢?下面通過本文給大家詳細介紹下,一起看看吧
    2018-03-03
  • mybatis 如何返回list<String>類型數(shù)據(jù)

    mybatis 如何返回list<String>類型數(shù)據(jù)

    這篇文章主要介紹了mybatis 如何返回list<String>類型數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • IDEA lombok注解(@Date、@Setter、@Getter)不起作用的解決

    IDEA lombok注解(@Date、@Setter、@Getter)不起作用的解決

    作者在使用Lombok時遇到問題,發(fā)現(xiàn)IntelliJ IDEA需要安裝Lombok插件才能支持Lombok注解,作者通過安裝Lombok插件并重啟IDEA解決了問題,并分享了這一經(jīng)驗,希望能幫助其他遇到相同問題的開發(fā)者
    2026-01-01
  • 簡單快速對@RequestParam聲明的參數(shù)作校驗操作

    簡單快速對@RequestParam聲明的參數(shù)作校驗操作

    這篇文章主要介紹了簡單快速對@RequestParam聲明的參數(shù)作校驗操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringSecurity6.x多種登錄方式配置小結(jié)

    SpringSecurity6.x多種登錄方式配置小結(jié)

    SpringSecurity6.x變了很多寫法,本文就來介紹一下SpringSecurity6.x多種登錄方式配置小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題

    解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題

    這篇文章主要介紹了解決Mybatis的serverTimezone時區(qū)出現(xiàn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • idea mabatisX插件生成mapper.xml文件全過程

    idea mabatisX插件生成mapper.xml文件全過程

    文章介紹了如何在IntelliJ IDEA中使用MybatisX插件自動生成MyBatis的Mapper和XML文件,步驟包括安裝插件、選擇數(shù)據(jù)庫表并右鍵選擇MybatisX-Generator進行配置和生成
    2026-03-03
  • SpringBoot + SpringSecurity 環(huán)境搭建的步驟

    SpringBoot + SpringSecurity 環(huán)境搭建的步驟

    這篇文章主要介紹了SpringBoot + SpringSecurity 環(huán)境搭建的步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • java睡眠排序算法示例實現(xiàn)

    java睡眠排序算法示例實現(xiàn)

    這篇文章主要為大家介紹了java睡眠排序算法的示例實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • Java 正則表達式入門詳解(基礎(chǔ)進階)

    Java 正則表達式入門詳解(基礎(chǔ)進階)

    最近看到很多同學想要學習java正則表達式的一些知識,那么腳本之家小編就為大家介紹一下,其實正則表達式實用性很強,處理大幅文字的時候都需要用得到,語法也大同小異
    2017-10-10

最新評論

沂水县| 广州市| 瓮安县| 德惠市| 磐安县| 建宁县| 东港市| 天津市| 方正县| 金秀| 建阳市| 南丰县| 合山市| 昌都县| 浏阳市| 永安市| 收藏| 罗甸县| 奉化市| 宜兰县| 黔南| 邯郸市| 富顺县| 高青县| 长阳| 尉犁县| 兴安县| 阳东县| 荆州市| 通道| 高青县| 洛隆县| 乌拉特后旗| 柳林县| 邹平县| 安庆市| 准格尔旗| 长寿区| 东丰县| 莱阳市| 兴文县|