Jdbi3官方教程(五) 查询Query

Jdbi3官方教程(一) 简介
Jdbi3官方教程(二) 入门
Jdbi3官方教程(三) Jdbi和Handle
Jdbi3官方教程(四) 参数绑定
Jdbi3官方教程(五) 查询Query
Jdbi3官方教程(六) 映射器Mapper

查询

查询是一个承载结果的SQL语句,用以返回数据库的结果集。

List<Map<String, Object>> users =
    handle.createQuery("SELECT id, name FROM user ORDER BY id ASC")
        .mapToMap()
        .list();

assertThat(users).containsExactly(
        map("id", 1, "name", "Alice"),
        map("id", 2, "name", "Bob"));
  • mapToMap

对于单行,您可以使用findOnly(),它只需要一行(或抛出异常):

String name = handle.select("select name from users where id = ?", 3)
    .mapTo(String.class)
    .findOnly();
  • Handle的select语句,同execute,可带参数

您还可以使用findFirst(),它返回Optional映射类型的一个:

Optional<String> name = handle.createUpdate("select name from users where id = :id")
    .bind("id", 3)
    .mapTo(String.class)
    .findFirst();

可以在列表中返回多个结果行:

List<String> name = handle.createQuery(
        "select title from films where genre = :genre order by title")
    .bind("genre", "Action")
    .mapTo(String.class)
    .list();

对于其他collections,使用Collectors

Set<String> name = handle.createQuery(
        "select title from films where genre = :genre order by title")
    .bind("genre", "Action")
    .mapTo(String.class)
    .collect(Collectors.toSet());

您还可以把结果转化成流:

handle.createQuery(
        "select title from films where genre = :genre order by title")
    .mapTo(String.class)
    .useStream(stream -> {
      // do stuff with stream
    });

到目前为止,所有示例都显示了String结果类型。当然,您可以映射到许多其他数据类型:

LocalDate releaseDate = handle.createQuery(
        "select release_date from films where name = :name")
    .bind("name", "Star Wars: A New Hope")
    .mapTo(LocalDate.class)
    .findOnly();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,582评论 1 92
  • 那些年 家里的贫寒只剩两片瓦砾 我只能靠着你的身躯 遮风避雨 那些年 家里的米缸见底 你用乳汁喂养 贪婪的吮吸 公...
    圩原君阅读 193评论 0 0
  • 一花一叶惹人倾, 花落命不同。 凋零难解愁绪, 留不住春行。 意难平, 愁总有, 梦渐明。 今夜无眠, 风云逆转,...
    徐谧浮水流灯阅读 380评论 4 3