Mybatis 查询结果返回 Optional<T>

Posted 笑虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 查询结果返回 Optional<T>相关的知识,希望对你有一定的参考价值。

Mybatis 查询结果返回 Optional<T>

mybatis-3.5.0 开始支持返回 java.util.Optional 类型。我们只需要把类型换了,Mybatis 会自动帮我们封装好 Optional

Dao 直接修改返回值

Poem queryById(Long id);

改为:

Optional<Poem> queryById(Long id);

Service

处理 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;

Controller 拿来直接用

   @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

以上是关于Mybatis 查询结果返回 Optional<T>的主要内容,如果未能解决你的问题,请参考以下文章

Optional与Mybatis

5.mybatis一对一表关联查询

第23课 可变参数模板_Optional和Lazy类的实现

Mybatis 查询结果返回 MapList<Map>Pair

NEO4J Optional Match when null, 整个查询返回为空

mybatis中查询结果为空时不同返回类型对应返回值