开发者

MyBatisPlus 查询selectOne方法实现

开发者 https://www.devze.com 2023-01-12 10:41 出处:网络 作者: 波波101
一次偶然间遇到的一个问题,MyBATisPlus 自带selectOne代码中查询出来了javascript一条数据,但是在数据库中查出来了多条数据,而代码中也没有报错!好奇之下看了源码才恍然大悟。

一次偶然间遇到的一个问题,MyBATisPlus 自带selectOne代码中查询出来了javascript一条数据,但是在数据库中查出来了多条数据,而代码中也没有报错!好奇之下看了源码才恍然大悟。

public SysFileTemplate findPathByTableName(String tableName) {
        Entit编程客栈yWrapper<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.getObjpythonect(baseMapper.selectList(wrapper));
}


/**
  * <p>
  * 从list中取第一条数据返回对应List中泛型的单个结果
  * </p>
  *
  * @param list
  * @param <E>
  * @retujsrn
  */
  public static <E> E getObject(List<E> list) {
    if (CollectionUtils.isNotEmpty(list)) {
      int size = list.size();
      if (size >开发者_Python 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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号