jdbi
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
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号