<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot 快速整合 Mybatis-Plus 入門教程 !解放生產(chǎn)力 !

          共 11528字,需瀏覽 24分鐘

           ·

          2021-07-08 07:00

          MyBatis-Plus 入門教程

          本文章是程序汪的朋友犬小哈分享

          今天給大家?guī)硪黄绾卧?Spring Boot 中快速整合 Mybatis-Plus 的入門教程,希望對大家有所幫助。

          一、先說說 MyBatis

          在說 MyBatis-Plus 之前,小哈帶小伙伴們先了解下什么是 MyBatis:

          MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄。

          PS: 下面 Mybatis-Plus 的介紹以及特性講解部分摘自官網(wǎng),畢竟官網(wǎng)的說明更權(quán)威。

          二、MyBatis-Plus 和 Mybatis 有啥區(qū)別?

          MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,就像 IPhone手機一般都有個 plus 版本一樣,它在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。

          MyBatis-Plus 的愿景是成為 MyBatis 最好的搭檔,就像魂斗羅中的 1P、2P,基友搭配,效率翻倍。

          三、MyBatis-Plus 的特性

          • 無侵入:只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
          • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/section>
          • 強大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實現(xiàn)單表大部分 CRUD 操作,更有強大的條件構(gòu)造器,滿足各類使用需求
          • 支持 Lambda 形式調(diào)用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯
          • 支持主鍵自動生成:支持多達 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
          • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作
          • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
          • 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
          • 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
          • 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
          • 內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時間,建議開發(fā)測試時啟用該功能,能快速揪出慢查詢
          • 內(nèi)置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作

          四、MyBatis-Plus 支持哪些數(shù)據(jù)庫 ?

          簡單來說,MyBatis 支持的數(shù)據(jù)庫,MyBatis-Plus 都支持, 如 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等。

          五、框架結(jié)構(gòu)

          MyBatis-Plus 框架結(jié)構(gòu)

          六、快速開始

          6.1 測試數(shù)據(jù)準備

          開始之前,需要準備一個數(shù)據(jù)庫環(huán)境,本教程以操作 MySQL 數(shù)據(jù)庫為例,所以你要準備如下:

          • 安裝 MySQL 數(shù)據(jù)庫;
          • 造一批測試數(shù)據(jù);

          6.1.1 安裝 MySQL 數(shù)據(jù)庫環(huán)境;

          MySQL 數(shù)據(jù)庫安裝在本地或者云上均可~

          至于如何安裝,大家可自行搜索一下安裝步驟就行,非常簡單, 如果想用 Docker 安裝 MySQL 環(huán)境,可參考小哈之前的一篇文章:一文教您通過 Docker 快速搭建各種測試環(huán)境(Mysql, Redis, ES, MongoDB) | 建議收藏

          6.1.2 準備一點測試數(shù)據(jù);

          新建一個名為 test 的測試數(shù)據(jù)庫,創(chuàng)建一張用戶表,Schema 建表腳本如下:

          DROP TABLE IF EXISTS user;

          CREATE TABLE `user` (
            `id` bigint(20UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
            `name` varchar(30NOT NULL DEFAULT '' COMMENT '姓名',
            `age` int(11NULL DEFAULT NULL COMMENT '年齡',
            `gender` tinyint(2NOT NULL DEFAULT 0 COMMENT '性別,0:女 1:男',
            PRIMARY KEY (`id`)
          COMMENT = '用戶表';

          再插入一些測試數(shù)據(jù):

          DELETE FROM user;

          INSERT INTO user (name, age, gender) VALUES
          ('犬小哈1'160),
          ('犬小哈2'181),
          ('犬小哈3'200),
          ('犬小哈4'281),
          ('犬小哈5'300);

          6.2 新建一個 Spring Boot Demo 項目

          數(shù)據(jù)庫準備好了,我們新建一個 Spring Boot 項目來講解如何使用 Mybatis-Plus,可以參考小哈之前發(fā)布的文章:這可能是史上最易懂的 Spring Boot 入門教程。

          測試項目目錄結(jié)構(gòu)如下:

          Spring Boot 整合 mybatis-plus 項目結(jié)構(gòu)

          全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形式的調(diào)用,所以安裝集成 Mybatis-Plus 3.0 要求如下:

          • JDK 8+;
          • Maven or Gradle, 本文以 maven 作為版本管理工具;

          6.3 添加依賴

          新建好 Spring Boot 項目后,在 pom.xml 文件中添加以下依賴:

          <!-- mybatis-plus 依賴 -->
          <dependency>
              <groupId>com.baomidou</groupId>
              <artifactId>mybatis-plus-boot-starter</artifactId>
              <version>3.4.2</version>
          </dependency>

          <!-- 單元測試依賴 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>

          <!-- lombok 依賴 -->
          <dependency>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>1.16.10</version>
          </dependency>

          <!-- mysql 依賴 -->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
          </dependency>

          PS: 小哈在寫這篇文章的時候,MyBatis-Plus 的最新版本為 3.4.2

          警告:引入 MyBatis-Plus 之后請不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差異導(dǎo)致的問題。

          6.4 添加配置

          接下來,在 applicaiton.yml 配置文件中添加 MySQL 數(shù)據(jù)庫的相關(guān)配置:

          # 數(shù)據(jù)庫配置
          spring:
            datasource:
              driver-class-name: com.mysql.cj.jdbc.Driver
              url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
              username: root
              password: qwe123

          配置好數(shù)據(jù)庫驅(qū)動、連接、用戶名和密碼。

          然后,在  Spring Boot 啟動類中添加  @MapperScan 注解,配置好 Mapper 文件夾的全路徑,作用是為了 mybatis-plus 能夠掃描到:

          @SpringBootApplication
          @MapperScan("com.quanxiaoha.mybatisplusdemo.mapper")
          public class MybatisPlusDemoApplication {

              public static void main(String[] args) {
                  SpringApplication.run(MybatisPlusDemoApplication.classargs);
              }

          }

          6.5 添加實體類

          前面已經(jīng)建好了用戶表,下面編寫用戶表對應(yīng)的實體類 User.java :

          @Data
          @Builder
          public class User {
              @TableId(type = IdType.AUTO)
              private Long id;
              private String name;
              private Integer age;
              private Integer gender;
          }

          @TableId(type = IdType.AUTO) 注解指定了字段 id 為表的主鍵,同時指定主鍵為自增類型。

          6.6 添加 Mapper 類

          編寫 Mapper 類 UserMapper.java :

          public interface UserMapper extends BaseMapper<User{
              
          }

          編寫的接口需要繼承 BaseMapper 接口,該接口定義了一些通用的操作數(shù)據(jù)庫方法,  單表大部分 CRUD 操作都能直接搞定,相比原生的 mybatis,效率提高了很多:

          public interface BaseMapper<Textends Mapper<T{
              int insert(T entity);

              int deleteById(Serializable id);

              int deleteByMap(@Param("cm") Map<String, Object> columnMap);

              int delete(@Param("ew") Wrapper<T> queryWrapper);

              int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

              int updateById(@Param("et") T entity);

              int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

              selectById(Serializable id);

              List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

              List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

              selectOne(@Param("ew") Wrapper<T> queryWrapper);

              Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

              List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

              List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

              List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

              <E extends IPage<T>> selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);

              <E extends IPage<Map<String, Object>>> selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
          }

          6.7 開始使用

          添加測試類,對用戶表進行增刪改查操作, 測試代碼如下:

          @SpringBootTest
          class MybatisPlusDemoApplicationTests {

              @Autowired
              private UserMapper userMapper;

              /**
               * 查詢數(shù)據(jù)
               */

              @Test
              public void testSelectUser() {
                  System.out.println(("----- 開始測試 mybatis-plus 查詢數(shù)據(jù) ------"));
                  //  selectList() 方法的參數(shù)為 mybatis-plus 內(nèi)置的條件封裝器 Wrapper,這里不填寫表示無任何條件,全量查詢
                  List<User> userList = userMapper.selectList(null);

                  userList.forEach(System.out::println);
              }

              /**
               * 新增一條數(shù)據(jù)
               */

              @Test
              public void testInsertUser() {
                  System.out.println(("----- 開始測試 mybatis-plus 插入數(shù)據(jù) ------"));
                  User user = User.builder()
                          .name("犬小哈教程 www.quanxiaoha.com")
                          .age(30)
                          .gender(1)
                          .build();

                  userMapper.insert(user);
              }

              /**
               * 刪除數(shù)據(jù)
               */

              @Test
              public void testDeleteUser() {
                  System.out.println(("----- 開始測試 mybatis-plus 刪除數(shù)據(jù) ------"));
                  // 根據(jù)主鍵刪除記錄
                  userMapper.deleteById(1);

                  // 根據(jù)主鍵批量刪除記錄
                  userMapper.deleteBatchIds(Arrays.asList(12));
              }

              /**
               * 更新數(shù)據(jù)
               */

              @Test
              public void testUpdateUser() {
                  System.out.println(("----- 開始測試 mybatis-plus 更新數(shù)據(jù) ------"));
                  User user = User.builder()
                          .id(1L)
                          .name("犬小哈教程 www.quanxiaoha.com")
                          .build();

                  userMapper.updateById(user);
              }
          }

          七、結(jié)語

          本文簡單介紹了在 Spring Boot 中如何快速整合集成 Mybatis-Plus, 同時在本地搭建了一個 Mysql 環(huán)境,演示了如何通過 Mybatis-Plus 做一些簡單的增刪改查(CRUD)操作,其他更豐富的功能,小伙伴們可以參考官網(wǎng) https://baomidou.com/guide。

          Ref

          • https://mybatis.org/mybatis-3/zh/index.html
          • https://baomidou.com/guide

          推薦資源

          歡迎添加程序汪個人微信 itwang007  進粉絲群或圍觀朋友圈

          往期資源  需要請自取

          Java項目分享 最新整理全集,找項目不累啦 03版

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載

          字節(jié)跳動總結(jié)的設(shè)計模式 PDF 火了,完整版開放下載!

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實戰(zhàn)進階

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          喜歡就"在看"唄^_^

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人电影在线免费 | 久久精品三级AV | 欧美日韩国产成人电影 | 欧美精品卡一操逼 | 97在线免费视频观看 |