它是如何从 mybatis 中获取 return Optional<List<VO>>

how it get return Optional<List<VO>> from mybatis

我不会说英语。

因为英语不流利。

我想在 Mapper 中使用 Optional

像这样

public interface TestMapper {
    @Transactional(readOnly = true)
    Optional<List<VO>> selectDataOpt();
}

<select id="selectDataOpt" resultType="VO">
    SELECT ID, NAME, CALL_NUM
    FROM  USER
    ORDER BY INSERTDATE ASC
    LIMIT 100
</select>

但是 mybatis 打印异常信息

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 21

我不知道我错过了什么,我能做什么?

感谢阅读

贡献你的智慧。

删除 Optional.

你的 framework/lib 抱怨他从 DB 得到了太多结果,但你要求他压缩到只有一个(可选)变量。

当您希望从 DB 获得一个结果或没有结果时,您只需使用 Optional

对于列表,保持原样即可,大多数framework/lib将为您return一个空列表。