MyBatisPlus主要是對(duì)MyBatis的簡(jiǎn)化,我們先體會(huì)下它簡(jiǎn)化在哪,然后再學(xué)習(xí)它是什么,以及它幫我們都做哪些事。
1 入門案例
-
MybatisPlus(簡(jiǎn)稱MP)是基于MyBatis框架基礎(chǔ)上開(kāi)發(fā)的增強(qiáng)型工具,旨在簡(jiǎn)化開(kāi)發(fā)、提供效率。
-
開(kāi)發(fā)方式
- 基于MyBatis使用MyBatisPlus
- 基于Spring使用MyBatisPlus
- 基于SpringBoot使用MyBatisPlus
SpringBoot剛剛我們學(xué)習(xí)完成,它能快速構(gòu)建Spring開(kāi)發(fā)環(huán)境用以整合其他技術(shù),使用起來(lái)是非常簡(jiǎn)單,對(duì)于MP的學(xué)習(xí),我們也基于SpringBoot來(lái)構(gòu)建學(xué)習(xí)。
學(xué)習(xí)之前,我們先來(lái)回顧下,SpringBoot整合Mybatis的開(kāi)發(fā)過(guò)程:
-
創(chuàng)建SpringBoot工程
-
勾選配置使用的技術(shù),能夠?qū)崿F(xiàn)自動(dòng)添加起步依賴包
-
設(shè)置dataSource相關(guān)屬性(JDBC參數(shù))
-
定義數(shù)據(jù)層接口映射配置
我們可以參考著上面的這個(gè)實(shí)現(xiàn)步驟把SpringBoot整合MyBatisPlus來(lái)快速實(shí)現(xiàn)下,具體的實(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,'傳智播客','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
說(shuō)明:serverTimezone是用來(lái)設(shè)置時(shí)區(qū),UTC是標(biāo)準(zhǔn)時(shí)區(qū),和咱們的時(shí)間差8小時(shí),所以可以將其修改為Asia/Shanghai
步驟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:編寫(xiě)引導(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所在包- 該方案的好處是只需要寫(xiě)一次,則指定包下的所有Dao接口都能被掃描到,
@Mapper
就可以不寫(xiě)。
- 該方案的好處是只需要寫(xiě)一次,則指定包下的所有Dao接口都能被掃描到,
步驟9:編寫(xiě)測(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容器初始化后,由框架創(chuàng)建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)行。
查看運(yùn)行結(jié)果:
跟之前整合MyBatis相比,你會(huì)發(fā)現(xiàn)我們不需要在DAO接口中編寫(xiě)方法和SQL語(yǔ)句了,只需要繼承BaseMapper
接口即可。整體來(lái)說(shuō)簡(jiǎn)化很多。
2 MybatisPlus簡(jiǎn)介
MyBatisPlus(簡(jiǎn)稱MP)是基于MyBatis框架基礎(chǔ)上開(kāi)發(fā)的增強(qiáng)型工具,旨在簡(jiǎn)化開(kāi)發(fā)、提高效率
通過(guò)剛才的案例,相信大家能夠體會(huì)簡(jiǎn)化開(kāi)發(fā)和提高效率這兩個(gè)方面的優(yōu)點(diǎn)。
MyBatisPlus的官網(wǎng)為: https://mp.baomidou.com/ MyBatis-Plus
說(shuō)明:
官方文檔中有一張很多小伙伴比較熟悉的圖片:
從這張圖中我們可以看出MP旨在成為MyBatis的最好搭檔,而不是替換MyBatis,所以可以理解為MP是MyBatis的一套增強(qiáng)工具,它是在MyBatis的基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,我們雖然使用MP但是底層依然是MyBatis的東西,也就是說(shuō)我們也可以在MP中寫(xiě)MyBatis的內(nèi)容。
對(duì)于MP的學(xué)習(xí),大家可以參考著官方文檔來(lái)進(jìn)行學(xué)習(xí),里面都有詳細(xì)的代碼案例。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-453116.html
MP的特性:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453116.html
- 無(wú)侵入:只做增強(qiáng)不做改變,不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響
- 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper,少量配置即可實(shí)現(xiàn)單表CRUD 操作
- 支持 Lambda:編寫(xiě)查詢條件無(wú)需擔(dān)心字段寫(xiě)錯(cuò)
- 支持主鍵自動(dòng)生成
- 內(nèi)置分頁(yè)插件
- ……
到了這里,關(guān)于MyBatisPlus入門案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!