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

從這張圖可以看出MP旨在成為MyBatis的最好搭檔,而不是替換MyBatis,所以可以理解為MP是MyBatis的一套增強(qiáng)工具,它是在MyBatis的基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,我們雖然使用MP但是底層仍然是MyBatis的東西,也就是說(shuō)我們也可以在MP中寫Mybatis的內(nèi)容。
對(duì)于MP的學(xué)習(xí),大家可以參考官方文檔進(jìn)行學(xué)習(xí),里面有詳細(xì)的代碼案例。
MP的特性:
● 無(wú)侵入:只做增強(qiáng)不做改變,不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響
● 強(qiáng)大的CRUD操作:內(nèi)置通用Mapper,少量配置即可實(shí)現(xiàn)單表CRUD操作
● 支持Lambda:編寫查詢條件無(wú)需擔(dān)心字段寫錯(cuò)
● 支持主鍵自動(dòng)生成
● 內(nèi)置分頁(yè)插件
......
二、MyBatisPlus入門案例
開(kāi)發(fā)方式:
- 基于MyBatis使用MyBatisPlus
- 基于Spring使用MyBatisPlus
- 基于SpringBoot使用MyBatisPlus
回顧基于SpringBoot整合Mybatsi開(kāi)發(fā)過(guò)程:
- 創(chuàng)建SpringBoot工程,配置相關(guān)屬性及勾選能夠?qū)崿F(xiàn)自動(dòng)添加起步依賴包
- 設(shè)置dataSource相關(guān)屬性(JDBC參數(shù))
- 定義數(shù)據(jù)層接口映射配置
基于以上實(shí)現(xiàn)步驟,對(duì)SpringBoot整合MyBatisPlus來(lái)快速實(shí)現(xiàn)下
1、創(chuàng)建數(shù)據(jù)庫(kù)及表
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ù)
說(shuō)明:由于MP并未被收錄到idea的系統(tǒng)內(nèi)置配置,無(wú)法直接選擇加入,需要手動(dòng)在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>
說(shuō)明:
● druid數(shù)據(jù)源可以加也可以不加,SpringBoot有內(nèi)置的數(shù)據(jù)源,可以配置成使用Druid數(shù)據(jù)源
● 從MP的依賴關(guān)系可以看出,通過(guò)依賴傳遞已經(jīng)將MyBatis與MyBatis整合Spring的jar包導(dǎo)入,我們不需要額外在添加MyBatis的相關(guān)jar包
5、添加MP的相關(guān)配置信息
resources默認(rèn)生成properties配置文件,可以將其替代成yml文件,并在文件中配置數(shù)據(jù)庫(kù)連接相關(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ù)庫(kù)表創(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);
}
}
說(shuō)明:Dao接口要想被容器掃描到,有兩種解決方案:
方案一:在Dao接口上添加@Mapper注解,并確保Dao處在引導(dǎo)類所在包或其子包中
該方案的缺點(diǎn)是需要在每一Dao接口中添加注解
方案二:在引導(dǎo)類上添加@MapperScan注解,其屬性為所要掃描的Dao所在包
該方案的好處是只需要寫一次,則指定包下所有的Dao接口都能被掃描到,@Mapper就可以不寫
9、編寫測(cè)試類
@SpringBootTest
class MpDemoApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testGetAll() {
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
說(shuō)明:
userDao注入的時(shí)候下面有紅線提示的原因:
UserDao是一個(gè)接口,不能實(shí)例化對(duì)象
只有在服務(wù)器啟動(dòng)IOC容器初始化后,由框架DAO接口的代理對(duì)象來(lái)注入
現(xiàn)在服務(wù)器并未啟動(dòng),所以代理對(duì)象也未創(chuàng)建,IDEA查找不到對(duì)應(yīng)的對(duì)象注入,所以提示報(bào)紅
一旦服務(wù)器啟動(dòng),就能注入其代理對(duì)象,所以該錯(cuò)誤提示不影響正常運(yùn)行
跟之前整合MyBatis相比,我們不需要再Dao接口中編寫方法和SQL語(yǔ)句,只需要繼承BaseMapper接口即可,整體來(lái)說(shuō)簡(jiǎn)化很多。
到此這篇關(guān)于MyBatisPlus的簡(jiǎn)介及案例詳解的文章就介紹到這了,更多相關(guān)MyBatisPlus案例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA 對(duì)接騰訊云直播的實(shí)現(xiàn)
這篇文章主要介紹了JAVA 對(duì)接騰訊云直播的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
深入了解Java SpringBoot自動(dòng)裝配原理
在使用springboot時(shí),很多配置我們都沒(méi)有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動(dòng)裝配。本文將詳細(xì)為大家講解SpringBoot的自動(dòng)裝配原理,需要的可以參考一下2022-03-03
IDEA SSM整合Redis項(xiàng)目實(shí)例 附源碼
今天給大家普及IDEA SSM整合Redis項(xiàng)目實(shí)例,包括pom.xml 配置和spring-redis.xml 配置代碼,代碼也很簡(jiǎn)單,通過(guò)項(xiàng)目實(shí)際案例能更好的幫助大家理解,需要的朋友可以參考下2021-06-06
SpringBoot+MyBatis+Redis實(shí)現(xiàn)分布式緩存
本文主要介紹了SpringBoot+MyBatis+Redis實(shí)現(xiàn)分布式緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
springSecurity之如何添加自定義過(guò)濾器
這篇文章主要介紹了springSecurity之如何添加自定義過(guò)濾器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java中的ConcurrentLinkedQueue使用解析
這篇文章主要介紹了Java中的ConcurrentLinkedQueue使用解析,一個(gè)基于鏈接節(jié)點(diǎn)的無(wú)界線程安全隊(duì)列,此隊(duì)列按照 FIFO(先進(jìn)先出)原則對(duì)元素進(jìn)行排序,隊(duì)列的頭部是隊(duì)列中時(shí)間最長(zhǎng)的元素,需要的朋友可以參考下2023-12-12

