JDBI是一个使用方便的SQL开发库,用符合Java语言习惯的集合、Bean等方式,提供关系数据库访问接口,同时保留了JDBC类似的信息。JDBI提供了链式和SQL两种风格的API。

  jdbi的网址是: http://jdbi.org/jdbi2/

  maven依赖,可以在https://mvnrepository.com/ 中查到

<dependency>
<groupId>org.jdbi</groupId>
<artifactId>jdbi</artifactId>
<version>${jdbi.version}</version>
</dependency>

  

  官网上链式风格的例子:

// using in-memory H2 database
DataSource ds = JdbcConnectionPool.create("jdbc:h2:mem:test",
"username",
"password");
DBI dbi = new DBI(ds);
Handle h = dbi.open();
h.execute("create table something (id int primary key, name varchar(100))"); h.execute("insert into something (id, name) values (?, ?)", 1, "Brian"); String name = h.createQuery("select name from something where id = :id")
.bind("id", 1)
.map(StringColumnMapper.INSTANCE)
.first(); assertThat(name, equalTo("Brian")); h.close();

    

  SQL风格的例子:

public interface MyDAO
{
@SqlUpdate("create table something (id int primary key, name varchar(100))")
void createSomethingTable(); @SqlUpdate("insert into something (id, name) values (:id, :name)")
void insert(@Bind("id") int id, @Bind("name") String name); @SqlQuery("select name from something where id = :id")
String findNameById(@Bind("id") int id); /**
* close with no args is used to close the connection
*/
void close();
}

  更为复杂的应用,Bean映射:

public class Something
{
private int id;
private String name;
private ValueType value; public Something() { } public Something(int id, String name, ValueType value)
{
this.id = id;
this.name = name;
this.value = value;
} public int getId()
{
return id;
} public void setId(int id)
{
this.id = id;
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public ValueType getValue()
{
return value;
} public void setValue(ValueType value)
{
this.value = value;
}
} public class SomethingMapper implements ResultSetMapper<Something>
{
public Something map(int index, ResultSet r, StatementContext ctx) throws SQLException
{
return new Something(r.getInt("id"), r.getString("name"), ValueType.valueOf(r.getString("value"));
}
}
@RegisterMapper(SomethingMapper.class)
public interface AnotherQuery
{
@SqlQuery("select id, name, value from something where id = :id")
Something findById(@Bind("id") int id);
}

  dropwizard中默认提供了对jdbi的支持,可以参考https://www.dropwizard.io/0.7.1/docs/manual/jdbi.html

jdbi的更多相关文章

  1. Java下好用的开源库推荐

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定 ...

  2. Java资源大全中文版(Awesome最新版)

    Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站 ...

  3. 国外程序员整理的Java资源大全分享

    Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...

  4. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  5. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  6. Java资源大全中文版(Awesome最新版)(转载)

    原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足 ...

  7. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  8. Metrics-Java版的指标度量工具之二

    接上<Metrics-Java版的指标度量工具之一> 4.       Histograms Histograms主要使用来统计数据的分布情况,最大值.最小值.平均值.中位数,百分比(75 ...

  9. Java资源大全

    古董级工具 这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用. Apache Ant:基于XML的构建管理工具. cglib:字节码生成库. GlassFish:应用服务器,由Oracle赞 ...

随机推荐

  1. Python基础之二进制

    引子 首先,计算机一共就能做两件事:计算和通信 那在讲计算机之前,我们先来讲一个故事,大家知道古时候的中国是如何通信的么? 假如,战国时期两个国家要打仗了,我们垒了城墙,每隔一段就有兵镇守,现在有人来 ...

  2. 【git】如何向gitHub上推送自己的项目

    一.在本地建立项目spring 二.在gitHub上创建spring仓库 三.在本地生成公私钥文件 命令:ssh-keygen -t rsa -C "shangxiaofei3@163.co ...

  3. day2 python学习

    1.格式化输出 现有一练习需求,问用户的姓名.年龄.工作.爱好 ,然后打印成以下格式 复制代码 ------------ info of Alex Li ----------- Name : Alex ...

  4. Computer Go Programming 学习

    https://senseis.xmp.net/?ComputerGoProgramming https://www.worldscientific.com/doi/pdf/10.1142/S0218 ...

  5. Javascript高级调试——console.table()

    原文:http://www.mariusschulz.com/2013/11/13/advanced-javascript-debugging-with-consoletable 本文只是简单翻译,部 ...

  6. Zabbix-2.4-安装-1

    前言 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix组件主要分两个: zabbix-server和zabbix-agent.支持的监控协议有I ...

  7. 关注 硬件 发展, 转载一篇介绍 VHDL 的文章

    <VHDL学习笔记> https://www.eefocus.com/hrbeulvcaho/blog/12-11/289109_978e2.html VHDL 和  “可编程逻辑阵列”  ...

  8. 判断两个IP是否处于同一子网(网段)

    如何去判断A和B两个IP是否在同一网段,假如有如下两个IP地址和子网掩码,判断他们是否是同一个网段的IP地址的方法: A IP:202.194.128.9 B IP:202.194.128.14 子网 ...

  9. [转]Java NIO通俗易懂简明教程

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO. Java NIO提供了与 ...

  10. bzoj 3600 没有人的算术——二叉查找树动态标号

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3600 已知 l 和 r 的排名,想快速知道 k 的排名.那么建一个 BIT ,用已知的排名做 ...