前言
在持久層框架中 mybatis 應(yīng)用比較多,而且比重在逐漸的上升。通常項(xiàng)目的組合是 SSM。mybatis 之所以火,是因?yàn)樗撵`活,使用方便,優(yōu)化比較容易。
mybatis 的直接執(zhí)行 sql 語(yǔ)句, sql 語(yǔ)句是寫在 xml 文件中,使用 mybatis 需要多個(gè) xml 配置文件,在一定程度上比較繁瑣。一般數(shù)據(jù)庫(kù)的操作都要涉及到CURD。
mybatis-plus 是在 mybatis 上的增強(qiáng),減少了 xml 的配置,幾乎不用編寫 xml就可以做到單表的 CURD,很是方便,極大提供了開發(fā)的效率。 我們寫程序目的就是讓生活更加簡(jiǎn)單。
什么是 mybatis-plus?
MyBatis-Plus(簡(jiǎn)稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生。
MyBatis-Plus 在 MyBatis 之上套了一層外衣,單表 CURD 的操作幾乎都可以由 MyBatis-Plus 代替執(zhí)行。而且提供了各種查詢方式,分頁(yè)行為。作為使用者無(wú)需編寫 xml,直接調(diào)用 MyBatis-Plus 提供的 API 就可以了。
快速開始
幾分鐘就可以上手 MP,前提是需要熟悉 mybatis,spring 或 spring boot, maven,掌握 lambda 表達(dá)式更能提升效率。
準(zhǔn)備環(huán)境:
準(zhǔn)備數(shù)據(jù)表
create database user;use user;CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `email` varchar(80) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into user values(null,'張三','666666@qq',18);
IDEA中配置 maven
創(chuàng)建 spring boot 應(yīng)用
使用 Spring Initializr 快速初始化一個(gè) Spring Boot 工程
idea 中 File – New Project 選擇 Spring Initializr 后填寫項(xiàng)目信息,創(chuàng)建工程。
項(xiàng)目信息
依賴選擇SQL中的MyBatis framework
定義項(xiàng)目名稱和路徑
pom文件添加mybatis-plus依賴
<!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><!-- mysql驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency>
application.properties或application.yml 添加數(shù)據(jù)庫(kù)配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/userspring.datasource.username=rootspring.datasource.password=root
或
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/user username: root password: root
創(chuàng)建實(shí)體類
@TableId 設(shè)置主鍵, IdType.AUTO 使用自動(dòng)增長(zhǎng)產(chǎn)生主鍵
創(chuàng)建mapper接口
繼承 MyBatis Plus 中的 baseMapper , 在 UserMapper 中使用 MP 中的方法,實(shí)
現(xiàn) CURD。
添加@MapperScan 掃描 Mapper 文件夾
測(cè)試
查看數(shù)據(jù)庫(kù)
配置 mybatis 日志
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
CRUD 基本用法
CRUD 的操作是來(lái)自 baseMapper 中的方法。baseMapper 中共有 17 個(gè)方法,CRUD 操作都有多個(gè)不同參數(shù)的方法。繼承 baseMapper 可以其中的方法。
baseMapper 方法列表:
insert 操作
注:insert()返回值 int,數(shù)據(jù)插入成功的行數(shù),成功的記錄數(shù)。getId()獲取主鍵值,成功影響行數(shù)后會(huì)自動(dòng)將主鍵值賦值給實(shí)體類的主鍵id。
update 操作
更新之前的數(shù)據(jù)庫(kù)
更新后的數(shù)據(jù)庫(kù)
注意:null 的字段不更新
沒有設(shè)置email的字段,所以此時(shí)的email的字段為null
SQL語(yǔ)句沒有設(shè)置email
數(shù)據(jù)庫(kù)
delete 操作
刪除有多個(gè)方法
deleteById:按主鍵刪除
根據(jù) Map 中條件刪除
注:刪除條件封裝在 Map 中,key 是列名,value 是值,多個(gè) key 之間 and 聯(lián)接。
日志:
批量刪除
把要?jiǎng)h除的 id 放入 List ,傳給 deleteBatchIds()
日志:
select 操作
注:沒有查詢結(jié)果,不會(huì)報(bào)錯(cuò)。
日志
批量查詢記錄
注:根據(jù) id 查詢記錄,把需要查詢的多個(gè) id 存入到 List,調(diào)用 selectBatchIds(),
日志
使用 Map 的條件查詢
把要查詢的條件字段 put 到 Map,key 是字段,value 是條件值。多個(gè)條件是 and聯(lián)接。調(diào)用 selectByMap(),傳入 Map 作為參數(shù),返回值是 List 集合。
日志