java mysql 异步查询数据库_Vert.x 异步访问数据库 MySQL

Vert.x提供异步访问数据库的API,数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API。

Vert.x提供的API层级非常低,可以说是仅仅在原生JDBC基础上封装了一层异步接口。所有的对数据库操作都需要通过编写SQL来完成,参数的封装和结果的获取都需要手动的来实现,对于习惯使用ORM框架的开发者可能会非常的不习惯。

先来通过一个查询数据库的案例来演示如何使用Vert.x提供的异步API

基本操作

1.引入数据库依赖,我们需要引入两个包,一个是vertx-jdbc,另一个是要真正连接数据库的驱动包,这里以MySQL为例

1

2 io.vertx

3 vertx-jdbc-client

4 3.6.0

5

7

8 mysql

9 mysql-connector-java

10 8.0.13

11

2.抽象出一个DbUtils来方便获取数据库客户端,为了简单,直接就将配置写到代码里了

1 public classJdbcUtils {2

3 //用于操作数据库的客户端

4 privateJDBCClient dbClient;5

6 publicJdbcUtils(Vertx vertx) {7

8 //构造数据库的连接信息

9 JsonObject dbConfig = newJsonObject();10 dbConfig.put("url", "jdbc:mysql://192.168.40.66:3306/test");11 dbConfig.put("driver_class", "com.mysql.jdbc.Driver");

.put("url", "jdbc:mysql://localhost:3306/test4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8")

.put("driver_class", "com.mysql.cj.jdbc.Driver")

12 dbConfig.put("user", "xxxx");13 dbConfig.put("password", "xxxx");14

15 //创建客户端16 dbClient =JDBCClient.createShared(vertx, dbConfig);17 }1819 //提供一个公共方法来获取客户端 20 publicJDBCClient getDbClient() {21 returndbClient;22 }23 24 }

通过上面的工具类,可以快速的获取到客户端,看上面的代码也很简单,通过JsonObect构建一些基本的数据库连接信息,然后通过JDBCClient的createShard方法创建一个JDBCClient实例。

3.进行数据库的操作,以查询年龄大于18岁的用户为例

1 public class JdbcTestVerticle extendsAbstractVerticle {2

3 @Override4 public void start() throwsException {5

6 //获取到数据库连接的客户端

7 JDBCClient jdbcClient = newJdbcUtils(vertx).getDbClient();8 String sql = "select * from t_user where age > ?";9 //构造参数

10 JsonArray params = new JsonArray().add(18);11 //执行查询

12 jdbcClient.queryWithParams(sql, params, qryRes->{13 if(qryRes.succeeded()) {14 //获取到查询的结果,Vert.x对ResultSet进行了封装

15 ResultSet resultSet =qryRes.result();16 //把ResultSet转为List形式

17 List rows =resultSet.getRows();18 //输出结果

19 System.out.println(rows);20 } else{21 System.out.println("查询数据库出错!");22 }23 });24

25 }26

27 public static voidmain(String[] args) {28 Vertx vertx =Vertx.vertx();29 vertx.deployVerticle(newJdbcTestVerticle());30 }31 }

JsonArray是一个数组,SQL中用到的参数可以通过构建一个JsonArray来赋值。

JsonObejct是一个Json对象,类似于阿里的fastjson中提供的JSONObject

这两个对象在Vert.x中非常常用,而且非常的好用,但一定要注意空指针的问题,这是非常让人头疼的。

优化

通过上面的三个步骤,就可成功的对数据库进行操作了,但还有些问题需要优化,比如数据库连接信息放到配置文件中,再比如使用数据库连接池等等。

* 使用配置文件

1 {2 "default":{3 "url":"jdbc:mysql://localhost:3306/my_project",4 "driver_class":"com.mysql.cj.jdbc.Driver",5 "user":"root",6 "password":"root"

7 },8 "pr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值