【Spring Boot】快速整合Mybatis-Plus

kamier發表於2023-02-07

一、引言

Mybatis-Plus是一個MyBatis的增強工具,在MyBatis的基礎上只做增強不做改變,為簡化開發、提高效率而生。它已經被大規模地應用在實際專案中,極大地提高了開發效率。

Mybatis-Plus主要有以下特點:

  1. 無侵入(不會對現有工程造成影響)
  2. 強大的CURD操作(內建通用Mapper、通用Service來實現單表的大部分CURD操作)
  3. 內建多種外掛(分頁外掛、效能分析外掛、全域性攔截外掛)

二、快速整合

這裡我使用的Spring Boot版本:2.5.14

2.1 引入依賴

在pom檔案中引入mybatis-plus-boot-starter依賴,這裡使用版本3.5.1,如下

    <!-- springboot整合mybatis-plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>

    <!-- mysql驅動 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.29</version>
    </dependency>

2.2 配置Mybatis-Plus及資料來源

下面是mybatis-plus的部分配置項,具體配置可參考官網https://baomidou.com/pages/56...

server:
  port: 8081

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8

mybatis-plus:
  # 如果是放在src/main/java目錄下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
  # 如果是放在resource目錄 classpath:/mapper/*Mapper.xml
  mapper-locations: classpath:/mapper/**/*.xml
  #實體掃描,多個package用逗號或者分號分隔
  typeAliasesPackage: com.kamier.springboot.mybatisplus.domain.*
  configuration:
    #開啟 Mybatis 二級快取,預設為 true
    cache-enabled: false
    #配置JdbcTypeForNull, oracle資料庫必須配置
    jdbc-type-for-null: 'null'
  global-config:
    db-config:
      # AUTO:資料庫自增  INPUT:自行設定  ASSIGN_ID:雪花演算法id  ASSIGN_UUID:UUID
      id-type: AUTO
      # 邏輯刪除配置(下面3個配置)
      logic-delete-field: del_flag
      logic-delete-value: 1
      logic-not-delete-value: 0

2.3 建立資料庫實體類、Service介面及其實現類、Mapper介面、xml檔案

這裡官方推薦使用MybatisX外掛來自動生成這些檔案,在idea中搜尋MybatisX外掛安裝即可(注意:如果專案不需要自定義編寫複雜的sql語句,可以不需要生成Mapper介面和xml檔案
image.png
安裝之後,右側欄Database連線資料庫後,可選中多張表,右鍵點選MybatisX-Generator,配置選項可參考下圖
image.png

image.png
點選Finish即可生成檔案,下圖紅框中的就是自動生成的檔案
image.png

可以來看下生成的類是什麼樣的

  • User.java(@TableName指定表名,@TableId指定主鍵,@TableField指定欄位名
    image.png
  • UserMapper.java(繼承BaseMapper<實體類>
    image.png
  • UserService.java(繼承IService<實體類>
    image.png
  • UserServiceImpl.java(繼承ServiceImpl<Mapper介面,實體類>
    image.png
  • UserMapper.xml(namespace為Mapper介面全限定名
    image.png

2.4 掃描Mapper

在啟動類上使用@MapperScan來掃描Mapper,如下圖
image.png

2.5 測試驗證

編寫一個簡單的Controller,如下

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

    @Autowired
    private UserService userService;

    @GetMapping("list")
    public R list() {
        return R.ok(userService.list());
    }
}

瀏覽器輸入http://localhost:8081/user/list,獲取使用者列表
image.png

三、結語

Spring Boot快速整合Mybatis-Plus到這裡就結束了,Mybatis-Plus還有許多有用的功能,包括多資料來源、內建外掛、條件構造器等等,這裡不一一介紹了,有興趣的同學可以自行去官網查閱。

相關文章