SpringBoot中使用MyBatis-Plus詳細(xì)步驟
一、MyBatis-Plus的使用步驟
1.引入MybatisPlus的起步依賴
MyBatisPlus官方提供了starter依賴包,其中集成了Mybatis和MybatisPlus的所有功能,并且實(shí)現(xiàn)了自動(dòng)裝配效果。
因此我們可以用_MybatisPlus的starter_直接代替Mybatis的starter:
<!--Mybatisplus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>2.定義Mapper(也叫dao)層的接口
用我們自定義的dao接口繼承MybatisPlus提供的BaseMapper接口:
public interface UserMapper extends BaseMapper<User>?{
}在該接口中,提供了許多基本的sql增刪改查方法,我們無需寫sql語句,直接調(diào)用這些方法即可完成對(duì)數(shù)據(jù)的增刪改查;

3.MyBatis-Plus中常用注解
MyBatisPlus會(huì)通過掃描實(shí)體類,并基于反射獲取實(shí)體類的屬性名稱,然后匹配到數(shù)據(jù)庫表中相應(yīng)字段。具體關(guān)系如下圖:

因此,我們?cè)诙x實(shí)體類和數(shù)據(jù)庫表時(shí),應(yīng)該遵循MP中一些默認(rèn)的約定(規(guī)范)來確保字段名和屬性名正確的匹配到。約定如下:
- 類名:蛇峰轉(zhuǎn)下劉線作為表名
- 名為id的屬性:作為表中的主鍵
- 變量名:陀峰轉(zhuǎn)下劉線作為表的字段名
如果在寫Java代碼時(shí),我們某些代碼不想符合上述三條約定的寫法;也可以使用MP中的常見注解來自定義約定,如下:

4. 使用MyBatis-Plus時(shí)要做如下配置
(1)如果是在Spring Boot 工程中,要配置Mapper接口所在的包:在Spring Boot的啟動(dòng)類上添加**@MapperScan**注解,并指定Mapper接口所在的包路徑。
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
?
? ?public static void main(String[] args) {
? ? ? ?SpringApplication.run(Application.class, args);
? }
?
}注意:在該例子中:**“com.baomidou.mybatisplus.samples.quickstart.mapper”**是 MyBatis-Plus 官方示例項(xiàng)目中的一個(gè)包路徑,用于存放示例的 Mapper 接口。在實(shí)際應(yīng)用中,你應(yīng)該將@MapperScan注解中的字符串參數(shù)替換為你自己的項(xiàng)目中 Mapper 接口所在的包路徑。
(2)在Spring MVC工程中使用MyBatis-Plus要做如下配置
①首先,在.xml配置文件中配置 MapperScan 注解:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> ? ?<property name="basePackage" value="com.baomidou.mybatisplus.samples.quickstart.mapper"/> </bean>
②然后,調(diào)整 SqlSessionFactory 為 MyBatis-Plus 的 SqlSessionFactory
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> ? ?<property name="dataSource" ref="dataSource"/> </bean>
③通常來說,一般的簡單工程,通過以上配置即可正常使用 MyBatis-Plus,具體可參考以下鏈接:Spring Boot 快速啟動(dòng)示例 ? Spring Boot 快速啟動(dòng)示例,
Spring MVC 快速啟動(dòng)示例 ? ?Spring MVC 快速啟動(dòng)示例。
同時(shí) MyBatis-Plus 提供了大量的個(gè)性化配置來滿足不同復(fù)雜度的工程,大家可根據(jù)自己的項(xiàng)目按需取用,詳細(xì)配置請(qǐng)參考鏈接:
使用配置https://baomidou.com/reference/
Spring Boot 配置
在 Spring Boot 項(xiàng)目中,可以通過 application.yml 或 application.properties 文件來配置 MyBatis-Plus。
yml配置文件中MyBatisPlus的配置項(xiàng)繼承了MyBatis.原生配置和一些自己特有的配置。例如:
mybatis-plus:
type-aliases-package: com.yzx.xxx.po #別名掃描包
mapper-locations: "classpath*:/mapper/**/*,Xml" #Mapper.Xml文件地址
configuration:
map-underscore-to-camel-case: true #是否開啟下劃線和駝峰的映射
cache-enabled: false #是否開啟二級(jí)緩存
global-config:
db-config:
id-type: assign_id #id為雪花算法生成
update-strategy: not_null #設(shè)置更新策略:只更新非空字段
?代碼中g(shù)loba-config下的配置表示全局其優(yōu)先級(jí)小于實(shí)體類中注解的優(yōu)先級(jí)。
如下圖:

Spring MVC 配置
在傳統(tǒng)的 Spring MVC 項(xiàng)目中,可以通過 XML 配置文件來配置 MyBatis-Plus。
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> ? ?<property name="dataSource" ref="dataSource"/> ? ?<property name="mapperLocations" value="classpath*:mapper/**/*.xml"/> ? ?<property name="typeAliasesPackage" value="com.your.domain"/> ? ?<!-- 其他配置 --> </bean>
5.條件構(gòu)造器 Wrapper
前提:BaseMapper接口中自帶的增刪改查方法都是通過數(shù)據(jù)的Id作為條件進(jìn)行的;如果想要自定義查詢條件則需要用到條件構(gòu)造器:Wrapper

Wrapper類與其字類的繼承關(guān)系如下:

Wrapper類中提供的,用于自定義構(gòu)建查詢條件的一些方法:

下面,我們以最常用的QueryWrapper(查詢條件構(gòu)造器)為例,來演示如何使用條件構(gòu)造器來構(gòu)造我們的sql查詢
**QueryWrapper(查詢語句的條件構(gòu)造器):**它拓展了select的功能,可以指定查找哪些字段:
使用方法:
- 首先,構(gòu)造一個(gè)Wrapper對(duì)像,并通過該對(duì)象來編寫查詢條件
- 然后,將剛剛創(chuàng)建的Wrapper對(duì)象作為參數(shù)傳入查詢方法中
例如我們要進(jìn)行一個(gè)如下的sql查詢:
查詢出名字中帶o的,存款大于等于1000元的人的id、用戶名(username)、信息(info)和收入(balance)
SQL語句如下:
SELECT id,username,info,balance FROM user WHERE username LIKE '%o%' AND balance >= 1000;
用QueryWrapper(條件構(gòu)造器)來實(shí)現(xiàn)上述SQL語句的代碼如下:
@Test
public void testQuerywrapper(){
//1.構(gòu)建查詢條件
QueryWrapper<user> wrapper = new QueryWrapper<user>()
.select("id","username","info","balance")
.like("username","o")
.ge("balance",1000);
//2.查詢
List<user> users = userMapper.selectList(wrapper);
}
條件構(gòu)造器Wrapper中的函數(shù)所對(duì)應(yīng)的sql語法,具體對(duì)應(yīng)表如下:

**另外:**在 MyBatis-Plus 中的IService接口是對(duì)service層的一個(gè)加強(qiáng),繼承了IService接口的service會(huì)自帶一些方法:(感興趣的小伙伴可以自行探索)
其中:save()方法是一個(gè)非常重要的功能,它用于將實(shí)體對(duì)象保存到數(shù)據(jù)庫中。具體地說,save 方法會(huì)根據(jù)實(shí)體對(duì)象的 ID(主鍵)來決定是執(zhí)行插入(insert)操作還是更新(update)操作。
- **插入操作:**如果傳入的實(shí)體對(duì)象的 ID 為空(即該對(duì)象在數(shù)據(jù)庫中尚不存在),
save方法會(huì)執(zhí)行插入操作,將該對(duì)象插入到數(shù)據(jù)庫中,并自動(dòng)生成一個(gè) ID(如果使用了自動(dòng)增長的主鍵策略)。 - **更新操作:**如果傳入的實(shí)體對(duì)象的 ID 不為空(即該對(duì)象在數(shù)據(jù)庫中已經(jīng)存在),
save方法會(huì)執(zhí)行更新操作,將該對(duì)象的屬性更新到數(shù)據(jù)庫中對(duì)應(yīng)的記錄上。這里需要注意的是,MyBatis-Plus 默認(rèn)只會(huì)更新非空屬性,即如果實(shí)體對(duì)象的某個(gè)屬性為null,則不會(huì)將該屬性更新到數(shù)據(jù)庫中(除非你進(jìn)行了特殊的配置)。
到此這篇關(guān)于SpringBoot中使用MyBatis-Plus詳細(xì)介紹的文章就介紹到這了,更多相關(guān)SpringBoot使用MyBatis-Plus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中整合Minio文件存儲(chǔ)的安裝部署過程
這篇文章主要介紹了SpringBoot整合Minio文件存儲(chǔ)的相關(guān)知識(shí),詳細(xì)介紹了Minio安裝部署過程,需要的朋友可以參考下2022-04-04
Java實(shí)現(xiàn)手寫線程池實(shí)例并測(cè)試詳解
這篇文章主要來模擬一下線程池和工作隊(duì)列的流程,以及編寫代碼和測(cè)試類進(jìn)行測(cè)試。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
SpringBoot 文件上傳和下載的實(shí)現(xiàn)源碼
這篇文章主要介紹了SpringBoot 文件上傳和下載的實(shí)現(xiàn)源碼,代碼簡單易懂非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
java讀取JSON文件的多種實(shí)現(xiàn)方式
這篇文章主要介紹了java讀取JSON文件的多種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Java實(shí)現(xiàn)的AES256加密解密功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的AES256加密解密功能,結(jié)合完整實(shí)例形式分析了Java實(shí)現(xiàn)AES256加密解密功能的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
java簡單實(shí)現(xiàn)用語音讀txt文檔方法總結(jié)
在本篇文章里小編給大家整理了關(guān)于java簡單實(shí)現(xiàn)用語音讀txt文檔的詳細(xì)方法總結(jié),有需要的朋友們參考下。2019-06-06
Java實(shí)現(xiàn)LRU緩存的實(shí)例詳解
這篇文章主要介紹了Java實(shí)現(xiàn)LRU緩存的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-08-08

