MyBatisPlus 查询selectOne方法实现
一次偶然间遇到的一个问题,MyBatisPlus 自带selectOne代码中查询出来了一条数据,但是在数据库中查出来了多条数据,而代码中也没有报错!好奇之下看了源码才恍然大悟。
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方法也是调用了selectList方法。在看getObject方法,如果selectList方法获取的值大于1时,只是发出一个警告消息 Warn: execute Method There are 2 results.,之后取第一条消息返回去,所以selectOne方法得到的就是一条消息(null值除外)
@Override public T selectOne(Wrapper<T> wrapper) { return SqlHelper.getObject(baseMapper.selectList(wrapper)); } /** * <p> * 从list中取第一条数据返回对应List中泛型的单个结果 * </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的返回值传递进行操作的话,必须考虑可能的返回null的情况,否则程序就会异常。
到此这篇关于MyBatisPlus 查询selectOne方法实现的文章就介绍到这了,更多相关MyBatisPlus selectOne内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springMvc异步的DeferredResult long polling应用示例解析
这篇文章主要为大家介绍了springMvc中DeferredResult的long polling应用示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03浅析Spring Boot中的spring-boot-load模块
spring-boot-loader模块允许我们使用java -jar archive.jar运行包含嵌套依赖jar的jar或者war文件,它提供了三种类启动器。下面通过本文给大家介绍spring-boot-load模块的相关知识,感兴趣的朋友一起看看吧2018-01-01
最新评论