SpringBoot3整合mybatis-plus的實(shí)現(xiàn)
Mybatis簡介
MyBatis-Plus是一個基于MyBatis的增強(qiáng)工具,它簡化了與數(shù)據(jù)庫的交互和操作。它提供了一系列的便利功能,可以減少編寫重復(fù)的SQL代碼和簡化數(shù)據(jù)訪問層的開發(fā)。
MyBatis-Plus的主要特點(diǎn)和功能:
- 代碼生成器:MyBatis-Plus提供了一個代碼生成器,可以根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)自動生成實(shí)體類、Mapper接口和XML映射文件的代碼,減少了手動編寫重復(fù)的CRUD操作的工作量。
- 通用CRUD操作:MyBatis-Plus提供了一套通用的CRUD操作方法,包括插入、更新、刪除和查詢等,可以大大簡化數(shù)據(jù)庫操作的代碼編寫。
- 強(qiáng)大的查詢構(gòu)建器:MyBatis-Plus提供了一個靈活而強(qiáng)大的查詢構(gòu)建器,可以通過鏈?zhǔn)秸{(diào)用的方式構(gòu)建復(fù)雜的查詢條件,支持動態(tài)條件拼接和排序等操作。
- 分頁查詢支持:MyBatis-Plus內(nèi)置了分頁查詢的支持,可以方便地進(jìn)行分頁查詢操作。
- 邏輯刪除支持:MyBatis-Plus支持邏輯刪除,可以通過配置實(shí)現(xiàn)將刪除操作轉(zhuǎn)換為更新操作,便于數(shù)據(jù)的恢復(fù)和管理。
- 自動填充字段:MyBatis-Plus支持自動填充字段的功能,可以在插入和更新操作時自動填充指定的字段值,例如創(chuàng)建時間和更新時間等。
- 樂觀鎖支持:MyBatis-Plus提供了樂觀鎖的支持,可以通過版本號或時間戳等機(jī)制實(shí)現(xiàn)并發(fā)控制,避免數(shù)據(jù)沖突和并發(fā)更新問題。
快速入門
1、添加依賴
<!-- MySql驅(qū)動 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- MyBatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
2、添加配置
#mybatis
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml,classpath:/META-INF/modeler-mybatis-mappings/*.xml
#實(shí)體掃描,多個package用逗號或者分號分隔
typeAliasesPackage: com.kopensoft.modules.*.entity
global-config:
#數(shù)據(jù)庫相關(guān)配置
db-config:
#主鍵類型
id-type: ASSIGN_ID
banner: false
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/study?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: 123456
3、增加包掃描的注解
@MapperScan(basePackages = “com.kopensoft.modules.*.mapper”)
package com.kopensoft;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = "com.kopensoft.modules.*.mapper")
@SpringBootApplication
public class KopensoftAdminApplication {
public static void main(String[] args) {
SpringApplication.run(KopensoftAdminApplication.class, args);
}
}
4、用戶實(shí)例加測試
創(chuàng)建表
-- study.sys_user definition
CREATE TABLE `sys_user` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `sys_user_id_IDX` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
創(chuàng)建實(shí)體類
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import nonapi.io.github.classgraph.json.Id;
@TableName("sys_user")
@Data
public class UserEntity {
@TableId(type = IdType.AUTO)
// 主鍵ID,自增策略
private Long id;
// 用戶名
private String username;
// 密碼
private String pwd;
}
MyBatis-Plus中常用的注解主要包括以下幾種:
@TableName:用于指定實(shí)體類對應(yīng)的數(shù)據(jù)庫表名,可以在注解中設(shè)置表名。
@TableId:用于指定實(shí)體類中的字段作為主鍵,并指定主鍵生成策略。常用的主鍵生成策略包括:
IdType.AUTO:自增主鍵。IdType.NONE:無主鍵。IdType.INPUT:手動輸入主鍵。IdType.ID_WORKER:全局唯一ID,數(shù)字類型。IdType.UUID:全局唯一ID,字符串類型。
@TableField:用于指定實(shí)體類中的字段與數(shù)據(jù)庫表中的字段的映射關(guān)系。常用的屬性包括:
value:指定數(shù)據(jù)庫表中的字段名。exist:指定該字段是否在數(shù)據(jù)庫表中存在,默認(rèn)為true。fill:指定該字段是否為自動填充字段,默認(rèn)為false。insertStrategy:指定插入操作的填充策略。updateStrategy:指定更新操作的填充策略。whereStrategy:指定查詢操作的填充策略。
@TableLogic:用于指定邏輯刪除字段,標(biāo)記該字段為邏輯刪除字段。邏輯刪除是通過修改字段的值來表示刪除狀態(tài),而不是直接從數(shù)據(jù)庫中刪除記錄。
@Version:用于樂觀鎖字段的標(biāo)記,標(biāo)記該字段為樂觀鎖字段。樂觀鎖是一種并發(fā)控制機(jī)制,通過比較字段的值來實(shí)現(xiàn)并發(fā)更新的控制。
@EnumValue:用于枚舉類型字段的標(biāo)記,標(biāo)記該字段為枚舉類型字段。
創(chuàng)建 mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kopensoft.common.modules.security.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
}
MyBatis-Plus的BaseMapper是一個通用的Mapper接口,提供了一系列常用的數(shù)據(jù)庫操作方法。通過繼承BaseMapper接口,可以直接使用這些方法,無需手動編寫SQL語句。
以下是BaseMapper接口的一些常用方法:
- insert:插入一條記錄到數(shù)據(jù)庫表中。
- deleteById:根據(jù)主鍵ID刪除數(shù)據(jù)庫表中的一條記錄。
- updateById:根據(jù)主鍵ID更新數(shù)據(jù)庫表中的一條記錄。
- selectById:根據(jù)主鍵ID查詢數(shù)據(jù)庫表中的一條記錄。
- selectList:查詢數(shù)據(jù)庫表中的所有記錄。
- selectPage:分頁查詢數(shù)據(jù)庫表中的記錄。
- selectCount:查詢數(shù)據(jù)庫表中的記錄總數(shù)。
- selectOne:根據(jù)條件查詢數(shù)據(jù)庫表中的一條記錄。
- 除了上述常用方法,BaseMapper還提供了一些其他方法,如條件查詢、批量操作、邏輯刪除等,具體可以根據(jù)需求查看官方文檔。
創(chuàng)建mapper對應(yīng)的xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.kopensoft.modules.sys.mapper.UserMapper"> </mapper>
mapper對應(yīng)的xml中常用標(biāo)簽
:XML文件的根元素,用于定義Mapper接口的映射配置。
:用于定義查詢操作的映射關(guān)系。
id:查詢操作的唯一標(biāo)識符。
resultType:查詢結(jié)果的映射類型,即返回的實(shí)體類類型。
parameterType:查詢參數(shù)的映射類型,即傳入的參數(shù)類型。
:用于動態(tài)拼接SQL語句的條件判斷。
:用于循環(huán)遍歷集合,并生成對應(yīng)的SQL語句片段。
:用于定義插入操作的映射關(guān)系。
id:插入操作的唯一標(biāo)識符。
parameterType:插入?yún)?shù)的映射類型,即傳入的參數(shù)類型。
:用于獲取插入操作生成的主鍵值。
:用于定義更新操作的映射關(guān)系。
id:更新操作的唯一標(biāo)識符。
parameterType:更新參數(shù)的映射類型,即傳入的參數(shù)類型。
:用于定義刪除操作的映射關(guān)系。
id:刪除操作的唯一標(biāo)識符。
parameterType:刪除參數(shù)的映射類型,即傳入的參數(shù)類型。
:用于定義結(jié)果集的映射關(guān)系。
id:結(jié)果集的唯一標(biāo)識符。
type:結(jié)果集的映射類型,即返回的實(shí)體類類型。
:用于定義字段與實(shí)體類屬性的映射關(guān)系。
:用于定義可重用的SQL語句片段。
id:SQL片段的唯一標(biāo)識符。
:用于引入可重用的SQL語句片段。
refid:引用的SQL片段的唯一標(biāo)識符。
使用測試類測試一下
package com.kopensoft;
import com.kopensoft.modules.sys.mapper.entity.UserEntity;
import com.kopensoft.modules.sys.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@SpringBootTest
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert() {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
UserEntity user = new UserEntity();
user.setUsername("admin");
user.setPwd(encoder.encode("123456"));
userMapper.insert(user);
}
}使用Mybatis-Plus插件生成代碼
https://baomidou.com/pages/ba5b24/
到此這篇關(guān)于SpringBoot3整合mybatis-plus的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot整合mybatis-plus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot整合Mybatis-plus實(shí)現(xiàn)多級評論功能
- Springboot3整合Mybatis-plus3.5.3報(bào)錯問題解決
- SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁查詢功能
- springboot3.2整合mybatis-plus詳細(xì)代碼示例
- SpringBoot3和mybatis-plus整合出現(xiàn)的問題解決辦法
- SpringBoot3.2.2整合MyBatis-Plus3.5.5依賴不兼容的問題解決
- SpringBoot整合Mybatis-Plus實(shí)現(xiàn)關(guān)聯(lián)查詢
- 全網(wǎng)最新springboot整合mybatis-plus的過程
- SpringBoot3.3.X整合Mybatis-Plus的實(shí)現(xiàn)示例
相關(guān)文章
Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題
這篇文章主要給大家介紹了關(guān)于Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題,將依賴打入jar包,由于maven管理了所有的依賴,所以將項(xiàng)目的代碼和依賴打成一個包對它來說是順理成章的功能,需要的朋友可以參考下2023-10-10
Java?List集合取交集的8種不同實(shí)現(xiàn)方式總結(jié)
工作中經(jīng)常遇到需要取兩個集合之間的交集、差集情況,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java?List集合取交集的8種不同實(shí)現(xiàn)方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
Java中雙重檢查鎖(double checked locking)的正確實(shí)現(xiàn)
雙重檢查鎖(Double-Check Locking),顧名思義,通過兩次檢查,并基于加鎖機(jī)制,實(shí)現(xiàn)某個功能,下面這篇文章主要給大家介紹了關(guān)于Java中雙重檢查鎖(double checked locking)的相關(guān)資料,需要的朋友可以參考下2021-09-09
springboot整合spring-data-redis遇到的坑
使用springboot整合redis,使用默認(rèn)的序列化配置,然后使用redis-client去查詢時查詢不到相應(yīng)的key.問題出在哪,怎么解決呢?下面小編給大家?guī)砹藄pringboot整合spring-data-redis遇到的坑,需要的的朋友參考下吧2017-04-04
java如何通過FileOutputStream字節(jié)流向文件中寫數(shù)據(jù)
這篇文章主要介紹了java如何通過FileOutputStream字節(jié)流向文件中寫數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
MyBatis中SqlSession實(shí)現(xiàn)增刪改查案例
這篇文章主要介紹了MyBatis中SqlSession實(shí)現(xiàn)增刪改查案例,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
深入學(xué)習(xí)JAVA GC日志的相關(guān)知識
JVM 在Java應(yīng)用程序優(yōu)化中是不可缺少的一大重項(xiàng),如何合理配置Java參數(shù),如何驗(yàn)證配置參數(shù)的有效性,從GC日志中可以獲得很重要的提示。下面小編就帶大家來一起學(xué)習(xí)一下吧2019-06-06
SpringMVC中RequestContextHolder獲取請求信息的方法
這篇文章主要介紹了SpringMVC中RequestContextHolder獲取請求信息的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

