jdbi
JDBI
jdbi
jdbi是我比较喜欢的一个数据库中间件,它是非 ORM 的,特别适合于数据库固定不变的场景,即不会对应多种数据库,以后也不会更换数据库的场景。
如果不是这种场景,那么使用jdbc或者最好选择hibernate等对多种数据库兼容较好的中间件。
基于上述使用场景,jdbi的优点有:
和 jdbci
比较接近,使用和掌握非常简单。
与时俱进,例如说现在最新的 jdbi3,增加了流式编程函数式等编程风格。
源代码的实现思路非常清晰,有一种美感。使用jdbi封装出的数据库代码也非常清晰。
jdbi 的两种风格
Fluent Api
handle.createUpdate(“INSERT INTO user(id, name) VALUES (:id, :name)")
.bind(“id”, 2)
.bind(“name”, “Clarice”)
.execute();
这里就是java8的流式风格,用连贯式表达式将一个sql实现串在一起
Declarative Api
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // Define your own declarative interface
public interface UserDao {
@SqlUpdate("CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR)")
void createTable();
@SqlUpdate("INSERT INTO user(id, name) VALUES (?, ?)")
void insertPositional(int id, String name);
@SqlUpdate("INSERT INTO user(id, name) VALUES (:id, :name)")
void insertNamed(@Bind("id") int id, @Bind("name") String name);
@SqlUpdate("INSERT INTO user(id, name) VALUES (:id, :name)")
void insertBean(@BindBean User user);
@SqlQuery("SELECT * FROM user ORDER BY name")
@RegisterBeanMapper(User.class)
List<User> listUsers();
}
|
声明式的主要是使用注解来实现,在实际的面向对象风格的代码中,我个人觉得声明式的比较简洁,容易阅读和维护。所以下面都按照Declarative Api的方式。
https://www.jianshu.com/p/1ee34c858cb9