MyBatisPlus 查詢selectOne方法實(shí)現(xiàn)
一次偶然間遇到的一個(gè)問(wèn)題,MyBatisPlus 自帶selectOne代碼中查詢出來(lái)了一條數(shù)據(jù),但是在數(shù)據(jù)庫(kù)中查出來(lái)了多條數(shù)據(jù),而代碼中也沒(méi)有報(bào)錯(cuò)!好奇之下看了源碼才恍然大悟。
public SysFileTemplate findPathByTableName(String tableName) {
EntityWrapper<SysFileTemplate> wrapper = new EntityWrapper<>();
wrapper.eq("table_name", tableName);
wrapper.ne("status", BizCode.Status.DELETE);
SysFileTemplate selectOne = selectOne(wrapper);
return selectOne;
}以下是mybatisPlus的源碼,可以看出selectOne方法也是調(diào)用了selectList方法。在看getObject方法,如果selectList方法獲取的值大于1時(shí),只是發(fā)出一個(gè)警告消息 Warn: execute Method There are 2 results.,之后取第一條消息返回去,所以selectOne方法得到的就是一條消息(null值除外)
@Override
public T selectOne(Wrapper<T> wrapper) {
? ? return SqlHelper.getObject(baseMapper.selectList(wrapper));
}
?/**
? ? ?* <p>
? ? ?* 從list中取第一條數(shù)據(jù)返回對(duì)應(yīng)List中泛型的單個(gè)結(jié)果
? ? ?* </p>
? ? ?*
? ? ?* @param list
? ? ?* @param <E>
? ? ?* @return
? ? ?*/
? ? public static <E> E getObject(List<E> list) {
? ? ? ? if (CollectionUtils.isNotEmpty(list)) {
? ? ? ? ? ? int size = list.size();
? ? ? ? ? ? if (size > 1) {
? ? ? ? ? ? ? ? logger.warn(String.format("Warn: execute Method There are ?%s results.", size));
? ? ? ? ? ? }
? ? ? ? ? ? return list.get(0);
? ? ? ? }
? ? ? ? return null;
? ? }特別注意:
1、如果需要將selectOne的返回值傳遞進(jìn)行操作的話,必須考慮可能的返回null的情況,否則程序就會(huì)異常。
到此這篇關(guān)于MyBatisPlus 查詢selectOne方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MyBatisPlus selectOne內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot2?使用activiti6?idea插件的過(guò)程詳解
這篇文章主要介紹了springboot2?使用activiti6?idea插件,本文通過(guò)截圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
java普通類(lèi)如何轉(zhuǎn)javafx程序
這篇文章主要介紹了java普通類(lèi)如何轉(zhuǎn)javafx程序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Java注解Annotation原理及自定義注解代碼實(shí)例
這篇文章主要介紹了Java注解Annotation原理及自定義注解代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
springboot下添加日志模塊和設(shè)置日志文件輸出的方法
日志的使用將通過(guò)SLF4J來(lái)使用,SLF4J是一個(gè)為Java應(yīng)用提供簡(jiǎn)單日志記錄的接口,在Spring框架中,SLF4J常常用于處理框架本身以及應(yīng)用程序的日志記錄,本文給大家介紹springboot下添加日志模塊和設(shè)置日志文件輸出的相關(guān)知識(shí),感興趣的朋友一起看看吧2023-12-12
Springboot pom項(xiàng)目間接依賴(lài)包版本與預(yù)期不符原因解決分析
這篇文章主要介紹了Springboot pom項(xiàng)目間接依賴(lài)包版本與預(yù)期不符原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java中WeakHashMap和HashMap的區(qū)別詳解
這篇文章主要介紹了Java中WeakHashMap和HashMap的區(qū)別詳解,WeakHashMap和HashMap一樣,WeakHashMap也是一個(gè)散列表,它存儲(chǔ)的內(nèi)容也是鍵值對(duì)(key-value)映射,而且鍵和值都可以為null,需要的朋友可以參考下2023-09-09
SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案
這篇文章主要介紹了SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案,通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08

