做開發,免不了對資料進行增刪改查,那麼mybatis-plus我覺得很適合我這個java新手,簡單好用。
官網在這
一、什麼是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, 'pingguotest1@pingguo.com'),
(2, 'wesson2', 19, 'pingguotest1@pingguo.com'),
(3, 'wesson3', 20, 'pingguotest1@pingguo.com'),
(4, 'wesson4', 22, 'pingguotest1@pingguo.com'),
(5, 'wesson5', 20, 'pingguotest1@pingguo.com');
2.idea中建立工程、配置
為了方便,可以新建一個Spring Initializr
工程。
配置pom.xml
檔案,可以修改下springboot的版本,我們使用穩定版的2.2.1.RELEASE
。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
接著新增maven依賴。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok 簡化實體類-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
還有,在idea裡安裝lombok
外掛。到settings裡plugin下,搜尋lombok回車,安裝即可。
3.配置資料庫
找到application.properties
檔案,路徑如圖所示,
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<User> {
}
這是一個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操作。
查詢
因為事先我們在表裡已經插入了資料,所以現在可以去把所有資料都查出來。
@SpringBootTest
class MpdemoApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void findAll() {
List<User> users = userMapper.selectList(null);
System.out.println(users);
}
}
因為我們配置了mybatis的日誌,所以在控制檯可以看到整個的操作過程。
新增、修改、刪除
// 新增
@Test
void addUser() {
User user = new User();
user.setName("pingguo");
user.setAge(21);
user.setEmail("pingguo@pingguo.com");
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實現簡單的增刪改查,很方便,其他內容後面繼續。