一文帶你了解如何正確使用MyBatisPlus
本篇文章,我們通過 MyBatis Plus 來對(duì)一張表進(jìn)行 CRUD 操作,來看看是如何簡(jiǎn)化我們開發(fā)的。
1、創(chuàng)建測(cè)試表
創(chuàng)建 USER 表:
DROP?TABLE?IF?EXISTS?`user`; CREATE?TABLE?`user`?( ??`ID`?int(11)?NOT?NULL, ??`USER_NAME`?varchar(32)?COLLATE?utf8mb4_bin?DEFAULT?NULL, ??`USER_AGE`?int(11)?DEFAULT?NULL, ??PRIMARY?KEY?(`ID`) )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8mb4?COLLATE=utf8mb4_bin;
向 USER 表中插入兩條數(shù)據(jù):
INSERT?INTO?`user`?VALUES?('1',?'IT可樂',?'18'); INSERT?INTO?`user`?VALUES?('2',?'YSOcean',?'22');
打開表,發(fā)現(xiàn)有兩條數(shù)據(jù)了:
2、創(chuàng)建 Spring Boot 工程
通過 IDEA 創(chuàng)建 Spring Boot 工程,如果不能連接 https://start.spring.io/ 網(wǎng)址,可以將網(wǎng)址變成 https://start.aliyun.com/ ,如下所示:
3、導(dǎo)入依賴
<dependency> ????<groupId>com.baomidou</groupId> ????<artifactId>mybatis-plus-boot-starter</artifactId> ????<version>3.3.2</version> </dependency> <dependency> ????<groupId>mysql</groupId> ????<artifactId>mysql-connector-java</artifactId> ????<scope>runtime</scope> </dependency>????
首先mybatis-plus 我們導(dǎo)入最新版 3.3.2。另外,由于我數(shù)據(jù)采用的是 MySql,所以這里導(dǎo)入了 Mysql 的連接依賴。
另外,為了簡(jiǎn)化JavaBean 類的書寫,我這里額外導(dǎo)入一個(gè) lombok 插件依賴。
<dependency> ????<groupId>org.projectlombok</groupId> ????<artifactId>lombok</artifactId> ????<optional>true</optional> </dependency>
通過這個(gè)依賴的相關(guān)注解,我們可以不用書寫繁瑣的 get/set 方法。
4、編寫數(shù)據(jù)庫配置文件
在 springboot 項(xiàng)目的 resource 目錄下,新建 application.yml 文件,添加如下內(nèi)容:
server: ??port:?8082 spring: ??datasource: ????url:?jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8 ????username:?root ????password:?root ????#?>=?6.x:?com.mysql.cj.jdbc.Driver ????#?<=?5.x:?com.mysql.jdbc.Driver ????driver-class-name:?com.mysql.cj.jdbc.Driver
注意:url里面填寫的 mybatisplus 是我的數(shù)據(jù)庫名稱,注意修改,username和password分別填寫自己的數(shù)據(jù)庫連接名稱和密碼。
5、編寫代碼
①、實(shí)體類User.java
@Getter @Setter public?class?User?{ ????private?Long?id; ????private?String?userName; ???? ????private?String?userAge; }
②、創(chuàng)建UserMapper 接口
import?com.baomidou.mybatisplus.core.mapper.BaseMapper; import?com.ys.mybatisplusstudy.entry.User; public?interface?UserMapper?extends?BaseMapper<User>?{ }
③、啟動(dòng)類增加@MapperScan注解
@SpringBootApplication @MapperScan("com.ys.mybatisplusstudy.mapper") public?class?MybatisplusstudyApplication?{ ????public?static?void?main(String[]?args)?{ ????????SpringApplication.run(MybatisplusstudyApplication.class,?args); ????} }
如果不想在啟動(dòng)類加 @MapperScan 注解,也可在每個(gè) Mapper 接口上增加 @Mapper 注解。
所有配置上面都以完成,是不是很簡(jiǎn)單,接下來我們對(duì)這張表進(jìn)行CRUD 測(cè)試。
6、CRUD 測(cè)試
我們?cè)诰帉?UserMapper 接口時(shí),其繼承了一個(gè) BaseMapper 接口:
public?interface?UserMapper?extends?BaseMapper<User>?{ }
我們進(jìn)入到 BaseMapper 內(nèi)部,發(fā)現(xiàn)其結(jié)構(gòu)如下:
這些方法便是我們常用的增刪改查了,下面我們分別演示幾個(gè)常用的。
①、insert:新增一條記錄
@SpringBootTest class?MybatisplusstudyApplicationTests?{ ????@Autowired ????private?UserMapper?userMapper; ????/** ?????*?新增一條記錄 ?????*/ ????@Test ????public?void?testInsert(){ ????????User?user?=?new?User(); ????????user.setId(3L); ????????user.setUserName("test?insert"); ????????user.setUserAge("1"); ????????int?insert?=?userMapper.insert(user); ????????System.out.println("影響記錄數(shù):"+insert); ????} }
執(zhí)行完畢后,我們查看數(shù)據(jù)庫:
②、delete:刪除記錄
/** ?*?根據(jù)id刪除一條記錄 ???*/ ???@Test ???public?void?testDeleteById(){ ???int?num?=?userMapper.deleteById(3L); ???System.out.println("刪除的記錄數(shù)為:"+num); ???QueryWrapper?wrapper?=?new?QueryWrapper(); ???wrapper.eq("id",3L); ???userMapper.delete(wrapper); ???} /** ?*?構(gòu)造相關(guān)條件刪除記錄 ???*/ ???@Test ???public?void?testDelete(){ ???QueryWrapper?wrapper?=?new?QueryWrapper(); ???wrapper.eq("USER_NAME","test?insert"); ???int?num?=?userMapper.delete(wrapper); ???System.out.println("刪除的記錄數(shù)為:"+num); ???}
③、update:修改記錄
/** ?*?根據(jù)id修改 ???*/ ???@Test ???public?void?testudpateById(){ ???User?user?=?new?User(); ???user.setId(3L); ???user.setUserName("test?update"); ???int?num?=?userMapper.updateById(user); ???System.out.println("修改的記錄數(shù)為:"+num); ???}
④、select:查詢記錄
/** ?*?查詢User表所有記錄 ???*/ ???@Test ???public?void?testSelectAll(){ ???List<User>?users?=?userMapper.selectList(null); ???users.forEach(x->?System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge())); ???} /** ?*?查詢指定記錄 ???*/ ???@Test ???public?void?testSelectWrapper(){ ???QueryWrapper?wrapper?=?new?QueryWrapper(); ???wrapper.eq("user_name","IT可樂"); ???List<User>?users?=?userMapper.selectList(wrapper); ???users.forEach(x->?System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge())); ???}
發(fā)現(xiàn)沒有,做增刪改查是如此的絲滑流暢,都不用寫SQL語句了。
當(dāng)然,這都只是單表的簡(jiǎn)單玩法,后面我們會(huì)介紹高階玩法。
7、打印SQL語句
這里補(bǔ)充一個(gè)小知識(shí)點(diǎn),通過如下配置,我們可以查看執(zhí)行的 SQL 語句日志。
在 applicatio.yml 文件中,進(jìn)行如下配置:
#?配置slq打印日志 mybatis-plus: ??configuration: ????log-impl:?org.apache.ibatis.logging.stdout.StdOutImpl
當(dāng)然,這種配置只是把 SQL 日志打印到控制臺(tái)便于我們調(diào)試,后面會(huì)介紹更加強(qiáng)大的 SQL 分析工具。
到此這篇關(guān)于一文帶你了解如何正確使用MyBatisPlus的文章就介紹到這了,更多相關(guān)MyBatisPlus使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Yml轉(zhuǎn)properties文件工具類YmlUtils的詳細(xì)過程(不用引任何插件和依賴)
這篇文章主要介紹了Yml轉(zhuǎn)properties文件工具類YmlUtils(不用引任何插件和依賴),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Java服務(wù)如何調(diào)用系統(tǒng)指令、Bat腳本記錄
這篇文章主要介紹了Java服務(wù)如何調(diào)用系統(tǒng)指令、Bat腳本記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06線程池FutureTask異步執(zhí)行多任務(wù)實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了線程池FutureTask異步執(zhí)行多任務(wù)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11IDEA如何將Java項(xiàng)目打包成可執(zhí)行的Jar包
在Java開發(fā)中,我們通常會(huì)將我們的項(xiàng)目打包成可執(zhí)行的Jar包,以便于在其他環(huán)境中部署和運(yùn)行,本文將介紹如何使用IDEA集成開發(fā)環(huán)境將Java項(xiàng)目打包成可執(zhí)行的Jar包,感興趣的朋友一起看看吧2023-07-07Spring MVC請(qǐng)求參數(shù)的深入解析
這篇文章主要給大家介紹了關(guān)于Spring MVC請(qǐng)求參數(shù)解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Java使用枚舉實(shí)現(xiàn)狀態(tài)機(jī)的方法詳解
這篇文章主要介紹了Java使用枚舉實(shí)現(xiàn)狀態(tài)機(jī)的方法詳解,枚舉類型很適合用來實(shí)現(xiàn)狀態(tài)機(jī),狀態(tài)機(jī)可以處于有限數(shù)量的特定狀態(tài),它們通常根據(jù)輸入,從一個(gè)狀態(tài)移動(dòng)到下一個(gè)狀態(tài),但同時(shí)也會(huì)存在瞬態(tài),需要的朋友可以參考下2023-11-11對(duì)數(shù)據(jù)進(jìn)行分頁顯示到table中的實(shí)現(xiàn)方法
這篇文章主要介紹了對(duì)數(shù)據(jù)進(jìn)行分頁顯示到table中的實(shí)現(xiàn)方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05