柚子快報(bào)激活碼778899分享:整合 Mybatis Plus
柚子快報(bào)激活碼778899分享:整合 Mybatis Plus
什么是 MyBatis Plus?
MyBatis Plus (簡稱 MP) 是一款持久層框架,說白話就是一款操作數(shù)據(jù)庫的框架。它是一個(gè) MyBatis 的增強(qiáng)工具,就像 iPhone手機(jī)一般都有個(gè) plus 版本一樣,它在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。
MyBatis Plus 的愿景是成為 MyBatis 最好的搭檔,就像魂斗羅中的 1P、2P,基友搭配,效率翻倍。
MyBatis Plus 的優(yōu)勢(shì)
快速開發(fā):MyBatis Plus 提供了一系列的便捷功能,如自動(dòng)生成 SQL 語句、通用 Mapper 等,使數(shù)據(jù)庫操作更加高效,能夠節(jié)省開發(fā)時(shí)間。更少的配置: Spring Boot 已經(jīng)為我們提供了很多默認(rèn)的配置,整合 MyBatis Plus 時(shí)只需少量的配置,減少了繁瑣的配置步驟。內(nèi)置分頁插件:MyBatis Plus 內(nèi)置了分頁插件,無需額外的代碼,就可以輕松實(shí)現(xiàn)分頁查詢。更好的支持: MyBatis Plus 在社區(qū)中有較廣泛的使用,擁有活躍的維護(hù)者和開發(fā)者,您可以輕松找到解決方案和文檔。
建表
在數(shù)據(jù)庫右鍵,新建查詢:
執(zhí)行如下建表語句:
CREATE TABLE `t_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`username` varchar(60) NOT NULL COMMENT '用戶名',
`password` varchar(60) NOT NULL COMMENT '密碼',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新時(shí)間',
`is_deleted` tinyint(2) NOT NULL DEFAULT '0' COMMENT '邏輯刪除:0:未刪除 1:已刪除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';
添加依賴
在父項(xiàng)目 主項(xiàng)目 的?pom.xml?文件中,聲明 MP 的依賴版本號(hào):
// 省略...
// 省略...
然后,在 xx-module-common 公共模塊的?pom.xml?文件中,引入 MP 和 MySQL 依賴:
配置文件
編輯?applicaiton-dev.yml?文件,添加數(shù)據(jù)庫鏈接相關(guān)的配置,包含連接池的配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/weblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
hikari:
minimum-idle: 5
maximum-pool-size: 20
auto-commit: true
idle-timeout: 30000
pool-name: Weblog-HikariCP
max-lifetime: 1800000
connection-timeout: 30000
connection-test-query: SELECT 1
解釋一下各個(gè)配置的含義和作用:
spring.datasource.driver-class-name: 指定數(shù)據(jù)庫驅(qū)動(dòng)類的完整類名,這里使用的是 MySQL 數(shù)據(jù)庫的驅(qū)動(dòng)類。spring.datasource.url: 數(shù)據(jù)庫連接的URL,指向本地的MySQL數(shù)據(jù)庫,端口是3306,數(shù)據(jù)庫名是xx,同時(shí)配置了一系列參數(shù),如使用Unicode編碼、字符編碼為UTF-8、自動(dòng)重連、不使用SSL、對(duì)零時(shí)間進(jìn)行轉(zhuǎn)換等。spring.datasource.username: 數(shù)據(jù)庫用戶名,這里使用的是root。spring.datasource.password: 數(shù)據(jù)庫密碼,這里使用的是123456。
數(shù)據(jù)庫鏈接池這塊,我們使用的 Spring Boot 默認(rèn)的 HikariCP,它是一個(gè)高性能的連接池實(shí)現(xiàn) , 同時(shí),它號(hào)稱是速度最快的連接池:
spring.datasource.hikari.minimum-idle: Hikari連接池中最小空閑連接數(shù)。spring.datasource.hikari.maximum-pool-size: Hikari連接池中允許的最大連接數(shù)。spring.datasource.hikari.auto-commit: 連接是否自動(dòng)提交事務(wù)。spring.datasource.hikari.idle-timeout: 連接在連接池中閑置的最長時(shí)間,超過這個(gè)時(shí)間會(huì)被釋放。spring.datasource.hikari.pool-name: 連接池的名字。spring.datasource.hikari.max-lifetime: 連接在連接池中的最大存活時(shí)間,超過這個(gè)時(shí)間會(huì)被強(qiáng)制關(guān)閉。spring.datasource.hikari.connection-timeout: 獲取連接的超時(shí)時(shí)間。spring.datasource.hikari.connection-test-query: 用于測(cè)試連接是否可用的SQL查詢,這里使用的是SELECT 1,表示執(zhí)行這個(gè)查詢來測(cè)試連接。
然后,在 xx-module-common?模塊中的?config?包下,新建一個(gè)?MybatisPlusConfig?配置文件,代碼如下:
package com.yanxiaosheng.xx.common.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
/**
* @author: 閆小生
* @date: 2023-08-22 16:52
* @description: Mybatis Plus 配置文件
**/
@Configuration
@MapperScan("com.quanxiaoha.weblog.common.domain.mapper")
public class MybatisPlusConfig {
}
@Configuration?: 此注解聲明該類為配置類; @MapperScan?: 掃描 MP 的?mapper?接口存放位置。PS: 數(shù)據(jù)庫相關(guān)的代碼,我們統(tǒng)一放置在?/domain?這個(gè)包中,格式如下:
dos?: 根據(jù)阿里的開發(fā)規(guī)范,統(tǒng)一將數(shù)據(jù)庫對(duì)應(yīng)的實(shí)體類命名為?xxxDO?這種形式,統(tǒng)一存放此包下。mapper?: 統(tǒng)一放置?mapper?接口文件;
實(shí)體類
在?/dos?包中,新建一個(gè)?UserDO?類,字段和數(shù)據(jù)庫中的字段通過轉(zhuǎn)駝峰的形式對(duì)應(yīng)一一對(duì)應(yīng)起來,MP 框架會(huì)默認(rèn)通過這種規(guī)則將字段光聯(lián)在一起,內(nèi)容如下:
package com.yanxiaosheng.xx.common.domain.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author: 閆小生
* @date: 2023-08-22 17:01
* @description: TODO
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("t_user")
public class UserDO {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String password;
private Date createTime;
private Date updateTime;
private Boolean isDeleted;
}
新建 Mapper 接口
在?mapper包中,創(chuàng)建一個(gè)?UserMapper?接口,代碼如下:
package com.yanxiaosheng.xx.common.domain.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.quanxiaoha.weblog.common.domain.dos.UserDO;
/**
* @author: 閆小生
* @date: 2023-08-22 17:06
* @description: TODO
**/
public interface UserMapper extends BaseMapper
}
至此,用于操作數(shù)據(jù)的前置代碼都搞定了。
新增一條用戶記錄
接下來,我們通過單元測(cè)試,往數(shù)據(jù)庫中添加一個(gè)測(cè)試記錄,看看能否新增成功。在 xx-web?模塊中的單元測(cè)試類中,新增一個(gè)測(cè)試方法,代碼如下:
@Autowired
private UserMapper userMapper;
@Test
void insertTest() {
// 構(gòu)建數(shù)據(jù)庫實(shí)體類
UserDO userDO = UserDO.builder()
.username("閆小生")
.password("123456")
.createTime(new Date())
.updateTime(new Date())
.isDeleted(false)
.build();
userMapper.insert(userDO);
}
運(yùn)行該測(cè)試方法,看看表中是否被成功插入一條數(shù)據(jù):
可以看到,數(shù)據(jù)插入成功了。
柚子快報(bào)激活碼778899分享:整合 Mybatis Plus
相關(guān)鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。