MybatisPlusException异常集

One record is expected, but the query result is multiple records

经排查发现,MP提供的BaseMapper.java>selectOne方法,其内部查询到多条记录时会报错(版本:3.5.1),代码如下:

    /**
     * 根据 entity 条件,查询一条记录
     * <p>查询一条记录,例如 qw.last("limit 1") 限制取一条记录, 注意:多条数据会报异常</p>
     *
     * @param queryWrapper 实体对象封装操作类(可以为 null)
     */
    default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {
        List<T> ts = this.selectList(queryWrapper);
        if (CollectionUtils.isNotEmpty(ts)) {
            if (ts.size() != 1) {
                throw ExceptionUtils.mpe("One record is expected, but the query result is multiple records");
            }
            return ts.get(0);
        }
        return null;
    }

解决办法:确保参数queryWrapper条件最终只会得到空集或者有且仅有一条记录的集合。

注意:实际情况下,你需要根据具体业务场景做出判断--若期望查询到多条记录时抛出异常,则什么都不用做了,若期望查询到多条记录时只需返回其中一条,则需要在条件中添加.last("limit 1")以排除可能查询到多条记录的情况。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MyBatisPlus MyBatisPlus简称mp,是mybatis的增强工具,在mybatis的基础上只做增...
    幻如常阅读 3,468评论 0 0
  • Mybatis-Plus(MP)在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 本篇是根据My...
    h2coder阅读 4,613评论 0 1
  • 01-MyBatisPlus简介 一、简介 官网:http://mp.baomidou.com/ 参考教程:htt...
    刊ing阅读 2,806评论 0 0
  • 一、mybatis-plus概念 官方文档:https://baomidou.com/guide/ mybatis...
    柠檬冰块阅读 3,919评论 0 0
  • Wrapper 解释说明 Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示 Ab...
    叾屾_02c4阅读 10,744评论 0 0