Vertex mysql逐个插入多行以捕获任何成功和错误
我有一个使用Vertex mysql在表中插入多行的用例。逐个插入这些行以确保捕获每一行的插入状态。DAO如下所示: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
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进行开发。提前谢谢