• 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

  • 相关阅读:
    C++ 派生类对象的构造与析构过程
    C++ lvalue(左值)和rvalue(右值)
    enum class 用法
    gcc 编译选项
    using用法总结
    const用法及与constexpr区别总结
    Lanbda表达式
    CMake 用法总结(转载)
    ElasticSearch学习文档
    Maven学习笔记
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/9971947.html
Copyright © 2020-2023  润新知