SpringBoot中使用MyBatis-Plus詳細(xì)步驟
一、MyBatis-Plus的使用步驟
1.引入MybatisPlus的起步依賴
MyBatisPlus官方提供了starter依賴包,其中集成了Mybatis和MybatisPlus的所有功能,并且實現(xiàn)了自動裝配效果。
因此我們可以用_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)用這些方法即可完成對數(shù)據(jù)的增刪改查;
3.MyBatis-Plus中常用注解
MyBatisPlus會通過掃描實體類,并基于反射獲取實體類的屬性名稱,然后匹配到數(shù)據(jù)庫表中相應(yīng)字段。具體關(guān)系如下圖:
因此,我們在定義實體類和數(shù)據(jù)庫表時,應(yīng)該遵循MP中一些默認(rèn)的約定(規(guī)范)來確保字段名和屬性名正確的匹配到。約定如下:
- 類名:蛇峰轉(zhuǎn)下劉線作為表名
- 名為id的屬性:作為表中的主鍵
- 變量名:陀峰轉(zhuǎn)下劉線作為表的字段名
如果在寫Java代碼時,我們某些代碼不想符合上述三條約定的寫法;也可以使用MP中的常見注解來自定義約定,如下:
4. 使用MyBatis-Plus時要做如下配置
(1)如果是在Spring Boot 工程中,要配置Mapper接口所在的包:在Spring Boot的啟動類上添加**@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 官方示例項目中的一個包路徑,用于存放示例的 Mapper 接口。在實際應(yīng)用中,你應(yīng)該將@MapperScan
注解中的字符串參數(shù)替換為你自己的項目中 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 快速啟動示例 ? Spring Boot 快速啟動示例,
Spring MVC 快速啟動示例 ? ?Spring MVC 快速啟動示例。
同時 MyBatis-Plus 提供了大量的個性化配置來滿足不同復(fù)雜度的工程,大家可根據(jù)自己的項目按需取用,詳細(xì)配置請參考鏈接:
使用配置https://baomidou.com/reference/
Spring Boot 配置
在 Spring Boot 項目中,可以通過 application.yml
或 application.properties
文件來配置 MyBatis-Plus。
yml配置文件中MyBatisPlus的配置項繼承了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 #是否開啟二級緩存 global-config: db-config: id-type: assign_id #id為雪花算法生成 update-strategy: not_null #設(shè)置更新策略:只更新非空字段 ?
代碼中g(shù)loba-config下的配置表示全局其優(yōu)先級小于實體類中注解的優(yōu)先級。
如下圖:
Spring MVC 配置
在傳統(tǒng)的 Spring MVC 項目中,可以通過 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)造一個Wrapper對像,并通過該對象來編寫查詢條件
- 然后,將剛剛創(chuàng)建的Wrapper對象作為參數(shù)傳入查詢方法中
例如我們要進(jìn)行一個如下的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)造器)來實現(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ù)所對應(yīng)的sql語法,具體對應(yīng)表如下:
**另外:**在 MyBatis-Plus 中的IService接口是對service層的一個加強(qiáng),繼承了IService接口的service會自帶一些方法:(感興趣的小伙伴可以自行探索)
其中:save
()方法是一個非常重要的功能,它用于將實體對象保存到數(shù)據(jù)庫中。具體地說,save
方法會根據(jù)實體對象的 ID(主鍵)來決定是執(zhí)行插入(insert)操作還是更新(update)操作。
- **插入操作:**如果傳入的實體對象的 ID 為空(即該對象在數(shù)據(jù)庫中尚不存在),
save
方法會執(zhí)行插入操作,將該對象插入到數(shù)據(jù)庫中,并自動生成一個 ID(如果使用了自動增長的主鍵策略)。 - **更新操作:**如果傳入的實體對象的 ID 不為空(即該對象在數(shù)據(jù)庫中已經(jīng)存在),
save
方法會執(zhí)行更新操作,將該對象的屬性更新到數(shù)據(jù)庫中對應(yīng)的記錄上。這里需要注意的是,MyBatis-Plus 默認(rèn)只會更新非空屬性,即如果實體對象的某個屬性為null
,則不會將該屬性更新到數(shù)據(jù)庫中(除非你進(jìn)行了特殊的配置)。
到此這篇關(guān)于SpringBoot中使用MyBatis-Plus詳細(xì)介紹的文章就介紹到這了,更多相關(guān)SpringBoot使用MyBatis-Plus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java簡單實現(xiàn)用語音讀txt文檔方法總結(jié)
在本篇文章里小編給大家整理了關(guān)于java簡單實現(xiàn)用語音讀txt文檔的詳細(xì)方法總結(jié),有需要的朋友們參考下。2019-06-06