国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MybatisPlus框架入門級理解

這篇具有很好參考價值的文章主要介紹了MybatisPlus框架入門級理解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

快速入門

入門案例

使用MybatisPlus的基本步驟:
1.引入MybatisPlus的起步依賴
MybatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且實現(xiàn)了自動裝配效果。因此,可以使用MybatisPlus的starter代替Mybatis的starter。
pom.xml

<!--mybatisplus依賴-->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.5.3.1</version>
</dependency>

2.自定義的Mapper繼承MybatisPlus提供的BaseMapper接口

public interface UserMapper extends BaseMapper<User> {
}

MybatisPlus框架入門級理解,JavaWeb學習日志,數(shù)據(jù)庫
3.在實體類上添加注解聲明表信息
4.在application.yml中根據(jù)需要添加配置

注:如果application.yml沒有顯示綠葉,可以按照以下步驟進行添加:
File --> Project Structure --> Facets --> “+” Spring --> 右上角小綠葉 Customize Spring Boot --> 將項目中的application.yml添加進去即可

常見注解

MybatisPlus是如何獲取實現(xiàn)CRUD的數(shù)據(jù)庫信息的?

  • 默認以類名駝峰轉(zhuǎn)下劃線作為表名
  • 默認把名為id的字段作為主鍵
  • 默認把變量名駝峰轉(zhuǎn)下劃線作為表的字段名

MybatisPlus通過掃描實體類,并基于反射獲取實體類信息作為數(shù)據(jù)庫表信息。
MybatisPlus中比較常用的幾個注解如下:

  • @TableName:用來指定表名

  • @TableId:用來指定表中的主鍵字段信息
    IdType枚舉:
    AUTO:數(shù)據(jù)庫自增長
    INPUT:通過set方法自行輸入
    ASSIGN_ID:分配ID,接口IdentifierGenerator的方法nextId來生成id

  • @TableField:用來指定表中的普通字段信息
    使用場景:
    ①成員變量名與數(shù)據(jù)庫字段名不一致
    ②成員變量名以is開頭,且是布爾值
    ③成員變量名與數(shù)據(jù)庫關(guān)鍵字沖突,如“order”,在@TableField中要用轉(zhuǎn)義字符括起來
    ⑩成員變量不是數(shù)據(jù)庫字段,@TableField(exist = false)

常用配置

MyBatisPlus的配置項繼承了MyBatis原生配置和一些自己特有的配置。
application.yml

mybatis-plus:
	type-aliases-package: com.wmy.mp.domain.po  # 別名掃描包
	mapper-locations: "classpath*:/mapper/**/*.xml"  # Mapper.xml文件地址 默認值
	configuration:
		map-underscore-to-camel-case: true  # 是否開啟下劃線和駝峰的映射
		cache-enabled: false  # 是否開啟二級緩存
	global-config:  # 全局配置 優(yōu)先級低于局部的配置
		db-config:
			id-type: assign_id  # id為雪花算法生成
			update-strategy: not_null  # 更新策略:只更新非空字段

MybatisPlus官方文檔

核心功能

條件構(gòu)造器

MybatisPlus支持各種復雜的where條件,可以滿足日常開發(fā)的所有需求。在MybatisPlus中BaseMapper接口是用來提供增刪改查功能的,其中一些比較特殊的方法的參數(shù)都不再是簡單的id,而是一個Wrapper類型的參數(shù),所謂的Wrapper就是條件構(gòu)造器,用以構(gòu)造復雜的sql語句。Wrapper并不是一個簡單的類,而是類似于Collection,具備一個復雜的繼承體系。
MybatisPlus框架入門級理解,JavaWeb學習日志,數(shù)據(jù)庫
比如說:
QueryWrapper就是在父類基礎(chǔ)上拓展了select相關(guān)的功能,允許構(gòu)造SQL語句時能指定select哪些字段;
UpdateWrapper就是在父類基礎(chǔ)上拓展了set相關(guān)的功能,它的setSql(boolean , String ) : UpdateWrapper<T>方法允許將set部分的字符串當做參數(shù)傳遞進去,后邊可以拼接到SQL語句中。
基于QueryWrapper的查詢案例
需求
①查詢出名字中帶"o"的,存款大于等于1000元的人的id、username、info、balance字段。
SQL語句

SELECT id,username,info,balance
FROM user
WHERE username LIKE ? AND balance >= ?

QueryWrapper查詢:UserMapperTest.java

@Test
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);
	users.forEach(System.out::println);
}

//或者
@Test
void testLambdaQueryWrapper(){
	//1.構(gòu)件查詢條件
	LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
		.select(User::getId, User::getUsername, User::getInfo, User::getBalance)
		.like(User::getUsername, "o")
		.ge(User::getBalance, 1000);
	//2.查詢
	List<User> users = userMapper.selectList(wrapper);
	users.forEach(System.out::println);
}

加粗樣式
②更新用戶名為jack的用戶的余額為2000。
SQL語句

UPDATE user
	SET balance = 2000
	WHERE (username = "jack")

QueryWrapper查詢

@Test
void testUpdateByQueryWrapper() {
	//1.要更新的數(shù)據(jù)
	User user = new User();
	user.setBalance(2000);
	//2.更新的條件
	QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username", "jack");
	//3.執(zhí)行更新
	userMapper.update(user, wrapper);
}

基于UpdateWrapper的更新案例
需求
更新id為1,2,4的用戶的余額,扣200
SQL語句

UPDATE user
	SET balance = balance - 200
	WHERE id in (1, 2, 4)

UpdateWrapper查詢:UserMapperTest.java

@Test
void testUpdateWrapper(){
	List<Long> ids = List.of(1L ,2L ,4L);
	UpdateWrapper<User> wrapper = new UpdateWrapper<User>()
		.setSql("balance = balance - 200")
		.in("id" , ids);
	userMapper.update(null , wrapper);
}

小結(jié)

  • QueryWrapper和LambdaQueryWrapper通常用來構(gòu)建select、delete、update的where條件部分
  • UpdateWrapper和LambdaUpdateWrapper通常只有在set語句比較特殊才使用
  • 盡量使用LambdaQueryWrapper和LambdaUpdateWrapper,避免硬編碼

自定義SQL

從條件構(gòu)造器的學習中可以看出,雖然MybatisPlus提供了非常靈活的關(guān)于Where條件的SQL語句拼接方式,但是它是在業(yè)務邏輯層完成的,違背了企業(yè)開發(fā)的一些規(guī)范,如果不使用的話自己在xml文件中編寫完整的SQL語句又會很麻煩。因此,我們可以利用MyBatisPlus的Wrapper來構(gòu)建復雜的Where條件,然后自定義SQL語句中剩下的部分。我們需要想一種辦法把mp構(gòu)建好的條件往下傳遞給mapper層,在xml中最終實現(xiàn)SQL語句的組裝。
步驟
1.基于Wrapper構(gòu)建where條件
UserMapperTest.java

@Test
void testCustomSqlUpdate() {
	//1.更新條件
	List<Long> ids = List.of(1L , 2L , 4l);
	int amount = 200;
	//2.定義條件
	QueryWrapper<User> wrapper = new QueryWrapper<User>().in("id" , ids);
	//3.調(diào)用自定義SQL方法
	userMapper.updateBalanceByIds(wrapper, amount);
}

2.在mapper方法參數(shù)中用Param注解聲明wrapper變量名稱,必須是ew
UserMapper.java

void updateBalanceByIds(@Param("ew") QueryWrapper<User> wrapper, @Param("amount") int amount);

3.自定義SQL,并使用Wrapper條件
UserMapper.xml

<update id="updateBalanceByIds">
	UPDATE tb_user SET balance = balance - #{amount} ${ew.customSqlSegment}
</update>

Service接口

Service接口類似于BaseMapper接口,包含了一些基本的增刪改查的代碼,跟BaseMapper相比,只多不少。
基本用法
MybatisPlus框架入門級理解,JavaWeb學習日志,數(shù)據(jù)庫
自定義接口需要實現(xiàn)IService接口,自定義實現(xiàn)類需要繼承IService的實現(xiàn)類ServiceImpl。
IUserService.java

public interface IUserService extends IService<User>{
}

UserServiceImpl.java

@Service
public class UserServiceImpl extends IServiceImpl<UserMapper, User> implements IUserService {
}

批量新增
IUserServiceTest.java

//方式一:普通for循環(huán)插入 提交了100000次網(wǎng)絡(luò)請求
@Test
void testSaveOneByOne(){
	long b = System.currentTimeMillis();
	for(int i = 1; i <= 100000 ; i++ ){
		userService.save(builderUser(i));
	}
	long e = System.currentTimeMillis();
	System.out.println("耗時:" + (e - b));
}

//方式二:IService的批量插入 每次批量插入1000條數(shù)據(jù) 插入100次即10萬條數(shù)據(jù)
@Test
void testSaveBatch(){
	//1.準備一個容量為1000的集合
	List<User> list = new ArrayList<>(1000);
	long b = System.currentTimeMillis();
	for (int i = 1; i <= 100000 ; i++){
		//2.添加一個user
		list.add(buildUser(i));
		//3.每1000條批量插入一次
		if (i % 1000 == 0){
			userService.saveBatch(list);
			//4.清空集合 準備下一批數(shù)據(jù)
			list.clear();	
		}
	}
}

方式二相較于方式一,采用的是批處理的方式,速度快了近十倍,方拾貳需要向網(wǎng)絡(luò)請求100次,但是由于在預編譯的過程中,每次的1000條數(shù)據(jù)是被編譯成了1000條SQL語句,所以MySQL在執(zhí)行的過程中就是逐條執(zhí)行的,所以方式二仍然有改進空間,可以通過配置jdbc參數(shù),在application.yaml的url后面拼接上一個參數(shù)rewriteBatchedStatements=true,開啟該參數(shù)之后,相當于把100000條插入語句變成了一個包含了100000條插入值的語句,只需要執(zhí)行一次,速度上會快很多,這才是真正意義上的批處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-806816.html

到了這里,關(guān)于MybatisPlus框架入門級理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 詳細理解(學習筆記) | DETR(整合了Transformer的目標檢測框架) DETR入門解讀以及Transformer的實操實現(xiàn)

    詳細理解(學習筆記) | DETR(整合了Transformer的目標檢測框架) DETR入門解讀以及Transformer的實操實現(xiàn)

    DETR ,全稱 DEtection TRansformer,是Facebook提出的基于Transformer的端到端目標檢測網(wǎng)絡(luò),發(fā)表于ECCV2020。 原文: 鏈接 源碼: 鏈接 DETR 端到端目標檢測網(wǎng)絡(luò)模型,是第一個將 Transformer 成功整合為檢測pipline中心構(gòu)建塊的目標檢測框架模型?;赥ransformers的端到端目標檢測,沒有NMS后

    2024年02月04日
    瀏覽(25)
  • Java框架學習(二)SSM體系:Spring、SpringMVC、MybatisPlus

    Java框架學習(二)SSM體系:Spring、SpringMVC、MybatisPlus

    在原始的分層架構(gòu)實現(xiàn)中,負責響應請求的Controller層依賴于業(yè)務邏輯處理的Service層,而業(yè)務邏輯處理的service層又依賴與數(shù)據(jù)訪問Dao層。上下層間相互依賴耦合,耦合的缺陷在于牽一發(fā)而動全身,不利于后期維護拓展。 為了分層解耦,Spring采用IoC控制反轉(zhuǎn)和DI依賴注入,來解

    2024年02月11日
    瀏覽(61)
  • 課程《JavaWeb基礎(chǔ)框架程序設(shè)計》考試題下篇——數(shù)據(jù)庫與表單操作用題(人事管理平臺的添加員工檔案信息的操作題)

    課程《JavaWeb基礎(chǔ)框架程序設(shè)計》考試題下篇——數(shù)據(jù)庫與表單操作用題(人事管理平臺的添加員工檔案信息的操作題)

    這篇文章是大學課程《JavaWeb基礎(chǔ)框架程序設(shè)計》考試題目的內(nèi)容,包括了原題和答案。題目只包括了三道編程題,分值為30分、30分和40分,這篇文章繼上一篇(課程《JavaWeb基礎(chǔ)框架程序設(shè)計》考試題上篇——基礎(chǔ)應用題(計算應用、水仙花數(shù))),介紹40分的那題,以及代碼

    2024年02月04日
    瀏覽(31)
  • 狂神Javaweb完整版基礎(chǔ)入門(IDEA版)值得學習的JavaWeb教程

    狂神Javaweb完整版基礎(chǔ)入門(IDEA版)值得學習的JavaWeb教程

    Java web web開發(fā): web,網(wǎng)頁的意思,www.baidu.com 靜態(tài)web html,css 提供給所有人看的數(shù)據(jù)始終不會發(fā)生變化! 動態(tài)web 淘寶,幾乎是所有的網(wǎng)站 提供給所有的人看的數(shù)據(jù)始終會變化,每個人在不同的時間,不同的地點看到不同的信息 技術(shù)棧:Servlet/Jsp,ASP,PHP 在Java中,動態(tài)web資

    2024年02月06日
    瀏覽(49)
  • Spring日志完結(jié)篇,MyBatis操作數(shù)據(jù)庫(入門)

    Spring日志完結(jié)篇,MyBatis操作數(shù)據(jù)庫(入門)

    目錄 Spring可以對日志進行分目錄打印 日志持久化(讓日志進行長期的保存) MyBatis操作數(shù)據(jù)庫(優(yōu)秀的持久層框架) MyBatis的寫法 開發(fā)規(guī)范: 單元測試的寫法 傳遞參數(shù) 他的意思是說spring相關(guān)只打印INFO級別的標準,但是他也能獲取到debug級別的日志 日志設(shè)置顏色(只能控制控制

    2024年02月04日
    瀏覽(44)
  • 【JavaWeb】入門一篇就夠了—學習筆記整理

    ?????? Github主頁??https://github.com/A-BigTree 筆記鏈接??https://github.com/A-BigTree/Code_Learning ?????? 如果可以,麻煩各位看官順手點個star~?? 如果文章對你有所幫助,可以點贊??收藏?支持一下博主~?? 順著尚硅谷的資料一路學習過來的,整理了JavaWeb基礎(chǔ)篇的內(nèi)容,

    2023年04月10日
    瀏覽(63)
  • Logback是最好用的日志框架嗎?Logback快速入門

    日志技術(shù)可以將系統(tǒng)執(zhí)行的信息選擇性的記錄到指定的位置(控制臺、文件中、數(shù)據(jù)庫中)。隨時以開關(guān)的形式控制是否記錄日志,無需修改源代碼,就可以取消或者記錄信息。并且牛人或者第三方公司已經(jīng)做好的日志記錄實現(xiàn)代碼,開發(fā)者可以直接拿來使用。 常見的日志框架

    2024年02月07日
    瀏覽(22)
  • 【javaweb】學習日記Day4 - Maven 依賴管理 Web入門

    【javaweb】學習日記Day4 - Maven 依賴管理 Web入門

    目錄 一、Maven入門 - 管理和構(gòu)建java項目的工具 1、IDEA如何構(gòu)建Maven項目 2、Maven 坐標 (1)定義 (2)主要組成 3、IDEA如何導入和刪除項目 二、Maven - 依賴管理 1、依賴配置 2、依賴傳遞 (1)查看依賴 ?(2)排除依賴 3、依賴范圍 三、Web 入門 1、Springboot web入門體驗 2、HTTP簡述

    2024年02月11日
    瀏覽(50)
  • 【javaweb】學習日記Day3 - Ajax 前后端分離開發(fā) 入門

    【javaweb】學習日記Day3 - Ajax 前后端分離開發(fā) 入門

    目錄 一、Ajax 1、簡介 2、Axios (沒懂 暫留) (1)請求方式別名 (2)發(fā)送get請求 (3)發(fā)送post請求 (4)案例 二、前端工程化 1、Vue項目-目錄結(jié)構(gòu) 2、Vue項目-啟動 (1)vscode頁面啟動 (2)cmd命令框啟動 3、配置Vue端口號 4、Vue項目開發(fā)流程 三、Vue組件庫 - Element? 1、快速入門

    2024年02月12日
    瀏覽(48)
  • JavaWeb登錄注冊系統(tǒng)/界面(郵箱驗證碼,數(shù)據(jù)庫連接,詳細注釋,可作結(jié)課作業(yè),可用于學習,可接入其他主系統(tǒng))

    JavaWeb登錄注冊系統(tǒng)/界面(郵箱驗證碼,數(shù)據(jù)庫連接,詳細注釋,可作結(jié)課作業(yè),可用于學習,可接入其他主系統(tǒng))

    目錄 1、致謝 2、前言 3、系統(tǒng)實機演示 4、系統(tǒng)分析與設(shè)計 (1)主要軟件與工具 (2)系統(tǒng)分析 (3)系統(tǒng)規(guī)劃 5、系統(tǒng)設(shè)計與構(gòu)建 (1)JavaWeb創(chuàng)建 (2)JavaWeb運行 (3)先期依賴準備: 6、代碼與關(guān)鍵注釋、文件簡析 (1)數(shù)據(jù)庫 (2)前端 index.jsp和styleIndex.css: forgetPassword

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包