mybatis-3.5.0 开始支持返回 java.util.Optional 类型。我们只需要把类型换了,Mybatis 会自动帮我们封装好 Optional。
Poem queryById(Long id);
改为:
Optional<Poem> queryById(Long id);
处理 Optional :如果为空,我们就创建个默认对象。
public Poem queryById(Long id) {
Poem poem = this.poemDao.queryById(id).orElseGet(()-> {
Poem p = new Poem();
p.setId(999L);
p.setAuthor("耀眼的笨笨");
p.setTitle("虫虫赋");
return p;
});
return poem;
}
@GetMapping("{id}")
public R<Poem> queryById(@PathVariable("id") Long id) {
return R.ok(this.poemService.queryById(id));
}
查询一下:ID存在时返回结果,ID不存在返回我创建的默认对象

笑虾:Mybatis 查询结果返回 Map、List<Map>、Pair
mybatis-3.5.9
optional_on_mapper_method/Mapper.java
OptionalOnMapperMethodTest.java