【发布时间】:2019-11-17 14:09:26
【问题描述】:
我有一个结果很大的查询,所以我使用 ResultHandler 跟踪来自 MyBatis 的文档来处理结果
因为我只是想把所有结果放到一个 Map 中,以便 ResultHandler 可以帮助我。
@Mapper
Interface ObjRepository {
@Result(value = {....})
@Select("SELECT .... FROM ....
JOIN .... JOIN ... WHERE country = #{country} ...")
Void consumeResult(@Parram('country') String country, ResultHanlder<MyObjDto> handle)
}
Spring boot 自动为我创建一个 ObjRepository 实例,我在其他类中使用它
@Sfl4j
@Service
public class MyService {
private Map<Long, MyObjDto> map = new HashMap();
@Autowired ObjRepository objRepository;
@PostConstruct
public init() {
Log.info("start loading");
objReposity.consumeResult("US", dto -> map.put(dto.getId(), dto));
Log.info("finish");
}
}
我的问题是当我启动 Spring Boot 应用程序时,它会卡在函数 consumeResult 中并且永远不会完成这个函数。
我试图从 MyBatis 中查找文档,但一无所获。我配置错了吗?我正在为当前项目使用 PostgreSql
【问题讨论】:
-
似乎有一个错字(
@Result->@Results),但除此之外,它看起来还可以。尝试使用像these 这样的最小项目来重现问题。如果你可以在 GitHub 上分享它,我会研究它。如果很难,请启用日志记录并找出卡住的确切位置(查询、映射结果等)。
标签: java spring postgresql spring-boot mybatis