MyBatisPlus的簡介及案例詳解
一、MyBatisPlus簡介
MyBatisPlus(簡稱MP)是基于MyBatis框架基礎(chǔ)上開發(fā)的增強(qiáng)型工具,旨在簡化開發(fā)、提高效率
MyBatisPlus的官網(wǎng)為:https://baomidou.com/

從這張圖可以看出MP旨在成為MyBatis的最好搭檔,而不是替換MyBatis,所以可以理解為MP是MyBatis的一套增強(qiáng)工具,它是在MyBatis的基礎(chǔ)上進(jìn)行開發(fā)的,我們雖然使用MP但是底層仍然是MyBatis的東西,也就是說我們也可以在MP中寫Mybatis的內(nèi)容。
對于MP的學(xué)習(xí),大家可以參考官方文檔進(jìn)行學(xué)習(xí),里面有詳細(xì)的代碼案例。
MP的特性:
● 無侵入:只做增強(qiáng)不做改變,不會對現(xiàn)有工程產(chǎn)生影響
● 強(qiáng)大的CRUD操作:內(nèi)置通用Mapper,少量配置即可實(shí)現(xiàn)單表CRUD操作
● 支持Lambda:編寫查詢條件無需擔(dān)心字段寫錯(cuò)
● 支持主鍵自動生成
● 內(nèi)置分頁插件
......
二、MyBatisPlus入門案例
開發(fā)方式:
- 基于MyBatis使用MyBatisPlus
- 基于Spring使用MyBatisPlus
- 基于SpringBoot使用MyBatisPlus
回顧基于SpringBoot整合Mybatsi開發(fā)過程:
- 創(chuàng)建SpringBoot工程,配置相關(guān)屬性及勾選能夠?qū)崿F(xiàn)自動添加起步依賴包
- 設(shè)置dataSource相關(guān)屬性(JDBC參數(shù))
- 定義數(shù)據(jù)層接口映射配置
基于以上實(shí)現(xiàn)步驟,對SpringBoot整合MyBatisPlus來快速實(shí)現(xiàn)下
1、創(chuàng)建數(shù)據(jù)庫及表
create database if not exists mybatisplus_db character set utf8; use mybatisplus_db; CREATE TABLE user ( id bigint(20) primary key auto_increment, name varchar(32) not null, password varchar(32) not null, age int(3) not null , tel varchar(32) not null ); insert into user values(1,'Tom','tom',3,'18866668888'); insert into user values(2,'Jerry','jerry',4,'16688886666'); insert into user values(3,'Jock','123456',41,'18812345678'); insert into user values(4,'hello','itcast',15,'4006184000');
2、創(chuàng)建SpringBoot工程

3、勾選配置使用技術(shù)
說明:由于MP并未被收錄到idea的系統(tǒng)內(nèi)置配置,無法直接選擇加入,需要手動在pom.xml中配置添加
4、pom.xml補(bǔ)全依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
說明:
● druid數(shù)據(jù)源可以加也可以不加,SpringBoot有內(nèi)置的數(shù)據(jù)源,可以配置成使用Druid數(shù)據(jù)源
● 從MP的依賴關(guān)系可以看出,通過依賴傳遞已經(jīng)將MyBatis與MyBatis整合Spring的jar包導(dǎo)入,我們不需要額外在添加MyBatis的相關(guān)jar包
5、添加MP的相關(guān)配置信息
resources默認(rèn)生成properties配置文件,可以將其替代成yml文件,并在文件中配置數(shù)據(jù)庫連接相關(guān)信息:application.yml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
username: root
password: root
6、根據(jù)數(shù)據(jù)庫表創(chuàng)建實(shí)體類
public class User{
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
//setter...getter...toString方法略
}
7、創(chuàng)建Dao接口
@Mapper
public interface UserDao extends BaseMapper<User>{
}
8、編寫引導(dǎo)類
@SpringBootApplication
//@MapperScan("com.itheima.dao")
public class Mybatisplus01QuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(Mybatisplus01QuickstartApplication.class, args);
}
}
說明:Dao接口要想被容器掃描到,有兩種解決方案:
方案一:在Dao接口上添加@Mapper注解,并確保Dao處在引導(dǎo)類所在包或其子包中
該方案的缺點(diǎn)是需要在每一Dao接口中添加注解
方案二:在引導(dǎo)類上添加@MapperScan注解,其屬性為所要掃描的Dao所在包
該方案的好處是只需要寫一次,則指定包下所有的Dao接口都能被掃描到,@Mapper就可以不寫
9、編寫測試類
@SpringBootTest
class MpDemoApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testGetAll() {
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
說明:
userDao注入的時(shí)候下面有紅線提示的原因:
UserDao是一個(gè)接口,不能實(shí)例化對象
只有在服務(wù)器啟動IOC容器初始化后,由框架DAO接口的代理對象來注入
現(xiàn)在服務(wù)器并未啟動,所以代理對象也未創(chuàng)建,IDEA查找不到對應(yīng)的對象注入,所以提示報(bào)紅
一旦服務(wù)器啟動,就能注入其代理對象,所以該錯(cuò)誤提示不影響正常運(yùn)行
跟之前整合MyBatis相比,我們不需要再Dao接口中編寫方法和SQL語句,只需要繼承BaseMapper接口即可,整體來說簡化很多。
到此這篇關(guān)于MyBatisPlus的簡介及案例詳解的文章就介紹到這了,更多相關(guān)MyBatisPlus案例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA SSM整合Redis項(xiàng)目實(shí)例 附源碼
今天給大家普及IDEA SSM整合Redis項(xiàng)目實(shí)例,包括pom.xml 配置和spring-redis.xml 配置代碼,代碼也很簡單,通過項(xiàng)目實(shí)際案例能更好的幫助大家理解,需要的朋友可以參考下2021-06-06
SpringBoot+MyBatis+Redis實(shí)現(xiàn)分布式緩存
本文主要介紹了SpringBoot+MyBatis+Redis實(shí)現(xiàn)分布式緩存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
Java中的ConcurrentLinkedQueue使用解析
這篇文章主要介紹了Java中的ConcurrentLinkedQueue使用解析,一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,此隊(duì)列按照 FIFO(先進(jìn)先出)原則對元素進(jìn)行排序,隊(duì)列的頭部是隊(duì)列中時(shí)間最長的元素,需要的朋友可以參考下2023-12-12

