在这篇文章中,我们将会看到怎样在vert.x应用中使用HSQL,当然也可以使用任意JDBC,以及使用vertx-jdbc-client提供的异步的API,这篇文章的代码在github。
异步?
vert.x一个很重要的特点就是它的异步性。使用异步的API,不需要等结果返回,当有结果返回时,vert.x会主动通知。为了说明这个,我们来看一个简单的例子。
我们假设有个add方法。一般来说,会像int r = add(1, 1)这样来使用它。这是一个同步的API,所以你必须等到返回结果。异步的API会是这样:add(1, 1, r -> { /*do something with the result*/})。在这个版本中,你传入了一个Handler,当结果计算出来时才被调用。这个方法不返回任何东西,实现如下:
public void add(int a, int b, Handler resultHandler) {
int r = a + b;
resultHandler.handle(r);
}
为了避免混淆概念,异步API并不是多线程。像我们在add例子里看到的,并没有涉及多线程。
异步JDBC
看了一些基本的异步的API,现在了解下vertx-jdbc-client。这个组件能够让我们通过JDBC driver与数据库交互。这些交互都是异步的,以前这样:
String sql = "SELECT * FROM Products";
ResultSet rs = stmt.executeQuery(sql);
现在要这样:
connection.query("SELECT * FROM Products", result -> {
// do something with the result
});
这个模型更高效,当结果出来后vert.x通知,避免了等待结果。
增加maven依赖
在pom.xml文件中增加两个 Maven dependencies
io.vertx
vertx-jdbc-client
3.1.0
org.hsqldb
hsqldb
2.3.3
第一个依赖提供了vertx-jdbc-client,第二个提供了HSQL JDBC的驱动。如果你想使用另外一个数据库,修改这个依赖,同时你还需要修改JDBC url和JDBC driver名。
初始化JDBC client
创建JDBC 客户端(client):
在MyFirstVerticle类中,声明一个新变量JDBCClient jdbc,并且在start方法中添加:
jdbc = JDBCClient.createShared(vertx, config(), "My-Whisky-Collection");
创建了一个JDBC client实例,使用verticle的配置文件配置JDBC client。这个配置文件需要提供下面的配置才能让JDBC client正常工作:
url-JDBC ur