MyBatisPlus 查詢selectOne方法實(shí)現(xiàn)
一次偶然間遇到的一個(gè)問題,MyBatisPlus 自帶selectOne代碼中查詢出來了一條數(shù)據(jù),但是在數(shù)據(jù)庫中查出來了多條數(shù)據(jù),而代碼中也沒有報(bào)錯!好奇之下看了源碼才恍然大悟。
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ù)返回對應(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的情況,否則程序就會異常。
到此這篇關(guān)于MyBatisPlus 查詢selectOne方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MyBatisPlus selectOne內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文帶你了解Java選擇排序的原理與實(shí)現(xiàn)
選擇排序:(Selection sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。本文主要為大家介紹一下選擇排序的原理與實(shí)現(xiàn),希望對大家有所幫助2022-11-11解決IDEA誤刪out目錄下的文件導(dǎo)致404無法訪問的問題
這篇文章主要介紹了解決IDEA誤刪out目錄下的文件導(dǎo)致404無法訪問的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02MyBatis?核心組件Configuration實(shí)例詳解
Configuration用于描述 MyBatis 的主配置信息,其他組件需要獲取配置信息時(shí),直接通過 Configuration 對象獲取,這篇文章主要介紹了MyBatis核心組件Configuration,需要的朋友可以參考下2023-08-08

詳解Java LinkedHashMap與HashMap的使用

Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實(shí)現(xiàn)

IntelliJ IDEA中Project與Module的概念以及區(qū)別