美文网首页
MybatisPlusException异常集

MybatisPlusException异常集

作者: 爱恨_交加 | 来源:发表于2022-10-25 11:50 被阅读0次

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")以排除可能查询到多条记录的情况。

相关文章

网友评论

      本文标题:MybatisPlusException异常集

      本文链接:https://www.haomeiwen.com/subject/kyyazrtx.html