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

Spring Boot整合MyBatis-Plus實現(xiàn)CRUD操作的示例代碼

 更新時間:2025年04月09日 09:45:20   作者:小小鴨程序員  
本文主要介紹了Spring Boot整合MyBatis-Plus實現(xiàn)CRUD操作,可以快速實現(xiàn)數(shù)據(jù)庫的增刪改查操作,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文將演示如何在Spring Boot項目中整合MyBatis-Plus框架,快速實現(xiàn)數(shù)據(jù)庫的增刪改查操作。相較于原生MyBatis,MyBatis-Plus提供了更簡潔的API和自動化功能。

環(huán)境準(zhǔn)備

  • JDK 1.8+
  • MySQL 5.7+
  • Spring Boot 2.7.x
  • MyBatis-Plus 3.5.x

實現(xiàn)步驟

1. 創(chuàng)建項目并添加依賴

通過Spring Initializr創(chuàng)建項目時勾選:

  • Spring Web
  • MySQL Driver

手動添加MyBatis-Plus依賴(pom.xml):

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

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

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mp_demo?useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 開啟SQL日志
  global-config:
    db-config:
      id-type: assign_id # 主鍵生成策略(使用雪花算法)

3. 創(chuàng)建實體類

@Data
@TableName("t_user") // 指定表名
public class User {
    @TableId(type = IdType.ASSIGN_ID) // 雪花算法生成ID
    private Long id;
    private String username;
    private Integer age;
    private String email;
}

4. 創(chuàng)建Mapper接口

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 繼承BaseMapper后已包含基礎(chǔ)CRUD方法
}

5. 實現(xiàn)Service層(可選增強(qiáng))

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    // 插入
    public int addUser(User user) {
        return userMapper.insert(user);
    }

    // 查詢?nèi)?
    public List<User> getAllUsers() {
        return userMapper.selectList(null);
    }

    // 條件查詢
    public User getUserById(Long id) {
        return userMapper.selectById(id);
    }

    // 更新
    public int updateUser(User user) {
        return userMapper.updateById(user);
    }

    // 刪除
    public int deleteUser(Long id) {
        return userMapper.deleteById(id);
    }
}

6. 添加分頁插件配置

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

7. 創(chuàng)建Controller

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public String add(@RequestBody User user) {
        userService.addUser(user);
        return "插入成功";
    }

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

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

    @PutMapping
    public String update(@RequestBody User user) {
        userService.updateUser(user);
        return "更新成功";
    }

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

測試示例

插入數(shù)據(jù)(POST /user)

{
    "username": "張三",
    "age": 25,
    "email": "zhangsan@example.com"
}

分頁查詢(需自定義方法)

// 在Mapper中添加:
@Select("SELECT * FROM t_user WHERE age > #{age}")
Page<User> selectPageByAge(Page<User> page, @Param("age") Integer age);

// Controller調(diào)用:
@GetMapping("/page")
public Page<User> page(@RequestParam(defaultValue = "1") Integer pageNum,
                      @RequestParam(defaultValue = "10") Integer pageSize) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectPage(page, null);
}

關(guān)鍵特性說明

自動生成SQL:無需編寫XML文件,基礎(chǔ)CRUD自動實現(xiàn)

主鍵策略:支持AUTO(數(shù)據(jù)庫自增)、ASSIGN_ID(雪花算法)、UUID

條件構(gòu)造器:通過QueryWrapper構(gòu)建復(fù)雜查詢條件

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("username", "張").lt("age", 30);
userMapper.selectList(wrapper);

常見問題排查

啟動時報錯找不到Mapper

  • 確保啟動類添加@MapperScan("com.example.mapper")
  • 檢查Mapper接口是否標(biāo)注@Mapper注解

字段映射失敗

  • 檢查數(shù)據(jù)庫字段名是否符合駝峰轉(zhuǎn)下劃線規(guī)則
  • 使用@TableField(value = "db_column")指定字段映射

分頁失效

  • 確認(rèn)已添加分頁插件配置
  • 查詢方法參數(shù)必須為Page對象

擴(kuò)展建議

  • 使用代碼生成器快速生成Entity/Mapper/Service代碼
  • 結(jié)合LambdaQueryWrapper實現(xiàn)類型安全的查詢條件
  • 通過@Version實現(xiàn)樂觀鎖功能

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

相關(guān)文章

  • json序列化時忽略值為null的字段2種方式實例

    json序列化時忽略值為null的字段2種方式實例

    這篇文章主要給大家介紹了關(guān)于json序列化時忽略值為null的字段的2種方式,當(dāng)對象中某個字段為null時,我們希望將對象轉(zhuǎn)換成json時為null的字段不會被轉(zhuǎn)換到j(luò)son字符串,里面需要的朋友可以參考下
    2023-10-10
  • java如何多線程批量更新10萬級的數(shù)據(jù)

    java如何多線程批量更新10萬級的數(shù)據(jù)

    在處理大數(shù)據(jù)量的批量更新時,直接使用mybatis的updateBatch可能導(dǎo)致效率低下甚至OOM,通過每次處理5000條數(shù)據(jù)的方式雖然安全但效率低,更優(yōu)的解決方案是使用多線程處理,將數(shù)據(jù)分批并多線程執(zhí)行,有效提高了處理速度并保證了系統(tǒng)穩(wěn)定性
    2024-10-10
  • Java getParameter方法案例詳解

    Java getParameter方法案例詳解

    這篇文章主要介紹了Java getParameter方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java?9中的"菱形"語法詳解

    Java?9中的"菱形"語法詳解

    Java?9?再次增強(qiáng)了“菱形”語法,它甚至允許在創(chuàng)建匿名內(nèi)部類時使用菱形語法,Java?可根據(jù)上下文來推斷匿名內(nèi)部類中泛型的類型,下面程序示范了在匿名內(nèi)部類中使用菱形語法,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Springboot如何獲取yml、properties參數(shù)

    Springboot如何獲取yml、properties參數(shù)

    這篇文章主要介紹了Springboot如何獲取yml、properties參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • mybatis?查詢返回Map<String,Object>類型

    mybatis?查詢返回Map<String,Object>類型

    本文主要介紹了mybatis?查詢返回Map<String,Object>類型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 利用Java+Selenium+OpenCV模擬實現(xiàn)網(wǎng)頁滑動驗證

    利用Java+Selenium+OpenCV模擬實現(xiàn)網(wǎng)頁滑動驗證

    目前很多網(wǎng)頁都有滑動驗證,目的就是防止不良爬蟲扒他們網(wǎng)站的數(shù)據(jù)。本文將介紹通過Java Selenium OpenCV解決網(wǎng)頁滑塊驗證,需要的可以參考一下
    2022-01-01
  • spring boot注解方式使用redis緩存操作示例

    spring boot注解方式使用redis緩存操作示例

    這篇文章主要介紹了spring boot注解方式使用redis緩存操作,結(jié)合實例形式分析了spring boot注解方式使用redis緩存相關(guān)的依賴庫引入、注解使用及redis緩存相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Spring?Cloud?Alibaba?Nacos服務(wù)治理平臺服務(wù)注冊、RestTemplate實現(xiàn)微服務(wù)之間訪問負(fù)載均衡訪問的問題

    Spring?Cloud?Alibaba?Nacos服務(wù)治理平臺服務(wù)注冊、RestTemplate實現(xiàn)微服務(wù)之間訪

    這篇文章主要介紹了Spring?Cloud?Alibaba:Nacos服務(wù)治理平臺,服務(wù)注冊、RestTemplate實現(xiàn)微服務(wù)之間訪問,負(fù)載均衡訪問,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Spring條件注解用法案例分析

    Spring條件注解用法案例分析

    這篇文章主要介紹了Spring條件注解用法,結(jié)合具體實例形式分析了Spring條件注解相關(guān)原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11

最新評論

余干县| 根河市| 儋州市| 庆元县| 黎城县| 时尚| 汽车| 儋州市| 夏津县| 阳新县| 大田县| 五指山市| 崇左市| 中牟县| 永泰县| 孟津县| 昌宁县| 碌曲县| 雷波县| 元阳县| 清苑县| 陵水| 赫章县| 昭通市| 通江县| 峨眉山市| 山西省| 巴中市| 富民县| 炉霍县| SHOW| 曲阜市| 尖扎县| 双桥区| 青田县| 轮台县| 静安区| 酒泉市| 万荣县| 含山县| 平山县|