Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vertex mysql逐个插入多行以捕获任何成功和错误_Mysql_Vert.x_Vertx Verticle - Fatal编程技术网

Vertex mysql逐个插入多行以捕获任何成功和错误

Vertex mysql逐个插入多行以捕获任何成功和错误,mysql,vert.x,vertx-verticle,Mysql,Vert.x,Vertx Verticle,我有一个使用Vertex mysql在表中插入多行的用例。逐个插入这些行以确保捕获每一行的插入状态。DAO如下所示: MySQLConnectOptions connectOptions = new MySQLConnectOptions() .setPort(3306) .setHost("the-host") .setDatabase("the-db") .setUser("user") .setPassword

我有一个使用Vertex mysql在表中插入多行的用例。逐个插入这些行以确保捕获每一行的插入状态。DAO如下所示:

MySQLConnectOptions connectOptions = new MySQLConnectOptions()
  .setPort(3306)
  .setHost("the-host")
  .setDatabase("the-db")
  .setUser("user")
  .setPassword("secret");

// Pool options
PoolOptions poolOptions = new PoolOptions()
  .setMaxSize(5);

public void insertUser(User user, Handler<AsyncResult<Long>> handler) {
    // Create the client pool
   MySQLPool client = MySQLPool.pool(connectOptions, poolOptions);
   Tuple tuple = Tuple.tuple().addInteger(user.getId()).addString(user.getName()).addInteger(user.getDepartmentId());
   client
     .preparedQuery("INSERT INTO `user` (id, name, departmentIdFk) VALUE (?, ?, ?)")
     .execute(tuple, ar -> {
     if (ar.succeeded()) {
       RowSet<Row> result = ar.result();
       handler.handle(result.property(MySQLClient.LAST_INSERTED_ID));
     } else {
        System.out.println("Failure: " + ar.cause().getMessage());
        handler.handle(ar.cause());
    }
  });
MySQLConnectOptions connectOptions=new MySQLConnectOptions()
.设置端口(3306)
.setHost(“主机”)
.setDatabase(“数据库”)
.setUser(“用户”)
.setPassword(“secret”);
//池选项
PoolOptions PoolOptions=新的PoolOptions()
.setMaxSize(5);
公共void插入器(用户、处理程序){
//创建客户端池
MySQLPool client=MySQLPool.pool(connectOptions,poolOptions);
Tuple Tuple=Tuple.Tuple().addInteger(user.getId()).addString(user.getName()).addInteger(user.getDepartmentId());
客户
.preparedQuery(“插入到`用户'(id、名称、部门IDFK)值(?,?)中”)
.execute(元组,ar->{
如果(ar.successed()){
行集结果=ar.result();
handle.handle(result.property(MySQLClient.LAST_INSERTED_ID));
}否则{
System.out.println(“失败:+ar.cause().getMessage());
handler.handle(ar.cause());
}
});
}

现在在我的服务类中,我正在尝试编写代码,以返回插入的每一行的状态,即
列表结果

  List<String> bulkUserInsert(List<User> users) {
   List<String> result = new ArrayList<>();
   for(User user: users) {
      dao.insertUser(user, longAsyncUser -> {
      if(longAsyncUser.succeeded()) {
         result.add("Ok")
      } else {
         result.add(user.toString() + "|" +  longAsyncUser.getCause().getMessage());
      }
     });
   }
}
List bulkUserInsert(列出用户){
列表结果=新建ArrayList();
for(用户:用户){
insertUser(用户,longAsyncUser->{
if(longAsyncUser.successed()){
结果。添加(“确定”)
}否则{
添加(user.toString()+“|”+longAsyncUser.getCause().getMessage());
}
});
}
}
你怎么能做到?我使用Vertx3.9.x进行开发。提前谢谢