1. 程式人生 > >【mybatis-plus】CRUD必備良藥,mybatis的好搭檔

【mybatis-plus】CRUD必備良藥,mybatis的好搭檔

做開發,免不了對資料進行增刪改查,那麼mybatis-plus我覺得很適合我這個java新手,簡單好用。 [官網在這](https://baomidou.com/) ### 一、什麼是mybatis-plus MyBatis-Plus(簡稱 MP),是一個MyBatis的增強工具,在MyBatis的基礎上只做增強 不做改變,為簡化開發、提高效率而生。 任何能使用mybatis進行crud,並且支援標準sql的資料庫,mp都可以勝任。 ### 二、特性 * **無侵入**: 只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑 * **損耗小**: 啟動即會自動注入基本`CURD`,效能基本無損耗,直接面向物件操作 * **強大的CRUD**: 內建通用`Mapper`、通用`Service`,僅僅通過少量配置即可實現單表大部分`CRUD`操作,更有強大的條件構造器,滿足各類使用需求 * **支援Lambda形式呼叫**: 通過`Lambda`表示式,方便的編寫各類查詢條件,無需再擔心欄位寫錯 * **支援主鍵自動生成**: 支援多達`4`種主鍵策略(內含分散式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題 * **支援ActiveRecord**模式: 支援`ActiveRecord`形式呼叫,實體類只需繼承`Model`類即可進行強大的`CRUD`操作 * **支援自定義全域性通用操作**: 支援全域性通用方法注入( Write once, use anywhere ) * **內建程式碼生成器**: 採用程式碼或者`Maven`外掛可快速生成`Mapper 、Model 、Service 、Controller`層程式碼,支援模板引擎,更有超多自定義配置 * **內建分頁外掛**: 基於`MyBatis`物理分頁,開發者無需關心具體操作,配置好外掛之後,寫分頁等同於普通`List`查詢 * **分頁外掛支援多種資料庫**: 支援 `MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer` 等多種資料庫 * **內建效能分析外掛**: 可輸出`Sql`語句以及其執行時間,建議開發測試時啟用該功能,能快速揪出慢查詢 * **內建全域性攔截外掛**: 提供全表`delete 、update`操作智慧分析阻斷,也可自定義攔截規則,預防誤操作 ### 三、試一試 既然是來操作資料的,那得準備好資料的環境。 #### 1.建庫、建表、建資料 ``` # 建立資料庫 CREATE DATABASE mybatis_plus; # 建立表 DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主鍵ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年齡', email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱', PRIMARY KEY (id) ); # 插入資料 INSERT INTO user (id, name, age, email) VALUES (1, 'wesson1', 18, '[email protected]'), (2, 'wesson2', 19, '[email protected]'), (3, 'wesson3', 20, '[email protected]'), (4, 'wesson4', 22, '[email protected]'), (5, 'wesson5', 20, '[email protected]'); ``` #### 2.idea中建立工程、配置 為了方便,可以新建一個`Spring Initializr`工程。 ![](https://img2020.cnblogs.com/blog/1268169/202012/1268169-20201224123538800-631229397.png) 配置`pom.xml`檔案,可以修改下springboot的版本,我們使用穩定版的`2.2.1.RELEASE`。 ``` org.springframework.boot spring-boot-starter-parent 2.2.1.RELEASE ``` 接著新增maven依賴。 ``` org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test
org.junit.vintage junit-vintage-engine
com.baomidou mybatis-plus-boot-starter 3.0.5 mysql mysql-connector-java
org.projectlombok lombok 1.18.12
``` 還有,在idea裡安裝`lombok`外掛。到settings裡plugin下,搜尋lombok回車,安裝即可。 ![](https://img2020.cnblogs.com/blog/1268169/202012/1268169-20201224124045844-1544908421.png) #### 3.配置資料庫 找到`application.properties`檔案,路徑如圖所示, ![](https://img2020.cnblogs.com/blog/1268169/202012/1268169-20201224124320669-1532745690.png) ``` spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://XXXXXX:3306/mybatis_plus?characterEncoding=UTF-8&serverTimezone=GMT%2B8 spring.datasource.username=XXXX spring.datasource.password=XXXXX #mybatis日誌,在控制檯可以看到操作過程日誌 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl ``` 注意:這裡使用的是mysql8,springboot2.1以上的版本,集成了8.0版本的jdbc驅動,在url里加上字尾`?characterEncoding=UTF-8&serverTimezone=GMT%2B8`。 另外,`driver-class-name`也建議加上`cj`,`com.mysql.cj.jdbc.Driver`。因為之前的`com.mysql.jdbc.Driver`已經廢棄了,執行的時候會有`warning`。 #### 4.編寫準備程式碼 在操作之前,還有些準備程式碼需要完成: ##### entity包下的user.java ``` package com.pingguo.mpdemo.entity; import lombok.Data; @Data public class User { private Long id; private String name; private Integer age; private String email; } ``` 這裡加上@Data註解即可,不要手動的編寫`set、get、tostring`方法了。 ##### mapper包下的UserMapper.java ``` package com.pingguo.mpdemo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.pingguo.mpdemo.entity.User; import org.springframework.stereotype.Repository; @Repository public interface UserMapper extends BaseMapper { } ``` 這是一個mapper介面,我們要繼承`BaseMapper`,把User實體傳進去,就可以使用crud了。 ##### 配置掃描mapper的路徑 在啟動類上,加個註解,mapper的路徑。 ``` package com.pingguo.mpdemo; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 配置掃描mapper的路徑 @MapperScan("com.pingguo.mpdemo.mapper") public class MpdemoApplication { public static void main(String[] args) { SpringApplication.run(MpdemoApplication.class, args); } } ``` #### 5.編寫測試程式碼 為了方便,可以直接在單元測試程式碼裡進行crud操作。 ![](https://img2020.cnblogs.com/blog/1268169/202012/1268169-20201224134855552-1506736301.png) ##### 查詢 因為事先我們在表裡已經插入了資料,所以現在可以去把所有資料都查出來。 ``` @SpringBootTest class MpdemoApplicationTests { @Autowired private UserMapper userMapper; @Test void findAll() { List users = userMapper.selectList(null); System.out.println(users); } } ``` 因為我們配置了mybatis的日誌,所以在控制檯可以看到整個的操作過程。 ![](https://img2020.cnblogs.com/blog/1268169/202012/1268169-20201224135119432-10304031.png) ##### 新增、修改、刪除 ``` // 新增 @Test void addUser() { User user = new User(); user.setName("pingguo"); user.setAge(21); user.setEmail("[email protected]"); userMapper.insert(user); } // 刪除 @Test void deleteUser() { userMapper.deleteById(1L); } // 修改 @Test void updateUser() { User user = new User(); user.setId(2L); user.setName("修改名稱222"); userMapper.updateById(user); } ``` 新增、刪除、修改也很簡單,可以通過日誌看下執行過程。 以上就是通過mp實現簡單的增刪改查,很方便,其他內容後面