數(shù)據(jù)庫CURD必備搭檔mybatis?plus詳解
一、什么是mybatis-plus
做開發(fā),免不了對數(shù)據(jù)進行增刪改查,那么mybatis-plus我覺得很適合我這個java新手,簡單好用。
官網(wǎng)在這
MyBatis-Plus(簡稱 MP),是一個MyBatis的增強工具,在MyBatis的基礎(chǔ)上只做增強 不做改變,為簡化開發(fā)、提高效率而生。
任何能使用mybatis進行crud,并且支持標準sql的數(shù)據(jù)庫,mp都可以勝任。
二、特性
- 無侵入: 只做增強不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
- 損耗?。?啟動即會自動注入基本CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
- 強大的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ù)防誤操作
三、試一試
既然是來操作數(shù)據(jù)的,那得準備好數(shù)據(jù)的環(huán)境。
1.建庫、建表、建數(shù)據(jù)
# 創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE mybatis_plus; # 創(chuàng)建表 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) ); # 插入數(shù)據(jù) 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中創(chuàng)建工程、配置
為了方便,可以新建一個Spring Initializr工程。
配置pom.xml文件,可以修改下springboot的版本,我們使用穩(wěn)定版的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.配置數(shù)據(jù)庫
找到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驅(qū)動,在url里加上后綴?characterEncoding=UTF-8&serverTimezone=GMT%2B8。
另外,driver-class-name也建議加上cj,com.mysql.cj.jdbc.Driver。因為之前的com.mysql.jdbc.Driver已經(jīng)廢棄了,運行的時候會有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操作。
查詢
因為事先我們在表里已經(jīng)插入了數(shù)據(jù),所以現(xiàn)在可以去把所有數(shù)據(jù)都查出來。
@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); }
新增、刪除、修改也很簡單,可以通過日志看下執(zhí)行過程。
以上就是通過mp實現(xiàn)簡單的增刪改查,很方便,其他內(nèi)容后面繼續(xù),更多關(guān)于mybatis plus數(shù)據(jù)庫CURD的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案
數(shù)據(jù)源的配置 我們先基于SpringBoot默認的HikariDataSource數(shù)據(jù)源,導(dǎo)入JDBC場景,看看SpringBoot幫我們自動配置了什么,下面我們來了解SpringBoot內(nèi)置數(shù)據(jù)源持久化2022-07-07SpringBoot攔截器與文件上傳實現(xiàn)方法與源碼分析
其實spring boot攔截器的配置方式和springMVC差不多,只有一些小的改變需要注意下就ok了。本文主要給大家介紹了關(guān)于如何在Springboot實現(xiàn)登陸攔截器與文件上傳功能,需要的朋友可以參考下2022-10-10Spring Boot使用AOP實現(xiàn)REST接口簡易靈活的安全認證的方法
這篇文章主要介紹了Spring Boot使用AOP實現(xiàn)REST接口簡易靈活的安全認證的方法,非常具有實用價值,需要的朋友可以參考下2018-11-11Spring Boot項目如何同時支持HTTP和HTTPS協(xié)議的實現(xiàn)
這篇文章主要介紹了Spring Boot項目如何同時支持HTTP和HTTPS協(xié)議的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10