0

愿望:我想使用 VERTX 以响应方式向 MySql 写入/读取。

上下文:我想编写一个 Micronaut Kafka 消费者,它将事件保存在 MySql(或任何数据库)中,基于无阻塞方法和 raactive 范例。

我尝试遵循这些教程:vertx guidemicronaut vertx guide。我得到的最接近的是:

package com.mybank

import io.vertx.kotlin.mysqlclient.mySQLConnectOptionsOf
import io.vertx.kotlin.sqlclient.poolOptionsOf
import io.vertx.mysqlclient.MySQLPool

fun main(args: Array<String>) {
//  build()
//      .args(*args)
//      .packages("com.mybank")
//      .start()

    var connectOptions = mySQLConnectOptionsOf(database = "mydb",
            host = "127.0.0.1",
            password = "q", port = 3306,
            user = "root")

    var poolOptions = poolOptionsOf(maxSize = 5)

    var client = MySQLPool.pool(connectOptions, poolOptions)


    client.query("SELECT * FROM mytable WHERE id=1").execute { ar ->
        if (ar.succeeded()) {
            var result = ar.result()
            println("Got ${result.size()} rows ")
        } else {
            println("Failure: ${ar.cause().stackTrace}")
        }

        // Now close the pool
        client.close()
    }
}

我的意思是最接近的,因为我可以编译和构建它。

但它拒绝这个完整的日志

C:\JDKs\jdk-11.0.6\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50902,suspend=y,server=n -javaagent:C:\Users\Cast\AppData\Local\JetBrains\IdeaIC2020.2\groovyHotSwap\gragent.jar -javaagent:C:\Users\Cast\AppData\Local\JetBrains\IdeaIC2020.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\_d\ZUP\WSs\demo-vertx-mysql\build\classes\kotlin\main;C:\_d\ZUP\WSs\demo-vertx-mysql\build\tmp\kapt3\classes\main;C:\_d\ZUP\WSs\demo-vertx-mysql\build\resources\main;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-lang-kotlin\3.9.4\38b75b79284d9aa353bf96d3649d55d64195ec14\vertx-lang-kotlin-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-validation\2.1.3\a9c9a65515166a54c69c2e149173b043b0a9587\micronaut-validation-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.4.10\998caa30623f73223194a8b657abd2baec4880ea\kotlin-stdlib-jdk8-1.4.10.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-reflect\1.4.10\e2b3c6695eee6085e606d96d685396dce23a3a06\kotlin-reflect-1.4.10.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut.kotlin\micronaut-kotlin-runtime\2.1.1\126f9ebc2fffaf6aea0520510141b2a3e244ea0e\micronaut-kotlin-runtime-2.1.1.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut.kafka\micronaut-kafka\3.0.0\506f2af4cdaf5894aa2a2b150bc48d2c1c4b83e6\micronaut-kafka-3.0.0.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-runtime\2.1.3\bc7dfb05dd0570ad4c23ea2f3ebd5241cefe0091\micronaut-runtime-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut.sql\micronaut-vertx-mysql-client\3.1.1\fb3fff87fd7477e7381b7da020497a8633f8ec1b\micronaut-vertx-mysql-client-3.1.1.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-inject\2.1.3\ab588f5d7d6fd42e341e3741495d1c2c2135e51e\micronaut-inject-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\javax.annotation\javax.annotation-api\1.3.2\934c04d3cfef185a8008e7bf34331b79730a9d43\javax.annotation-api-1.3.2.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-core\3.9.4\287f9461cd30f993c609007412d3ffc12d15f072\vertx-core-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-http\2.1.3\f603fce31199533f5453eb1f7b1f9db36088f2ac\micronaut-http-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.30\b5a4b6d16ab13e34a88fae84c35cd5d68cac922c\slf4j-api-1.7.30.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\javax.validation\validation-api\2.0.1.Final\cb855558e6271b1b32e716d24cb85c7f583ce09e\validation-api-2.0.1.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.4.10\30e46450b0bb3dbf43898d2f461be4a942784780\kotlin-stdlib-jdk7-1.4.10.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.4.10\ea29e063d2bbe695be13e9d044dcfb0c7add398e\kotlin-stdlib-1.4.10.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-messaging\2.1.3\f90f891cfe31fabe2fd6f88f1226d8acf26c0c09\micronaut-messaging-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.apache.kafka\kafka-clients\2.5.0\dd97db58ba8dd184028e9dd5d7934dd654942232\kafka-clients-2.5.0.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-aop\2.1.3\cdd7c896ccd5b7056642901596368ecedaf09f59\micronaut-aop-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.2.12\fc5cb9ad87c312f559a38253aa4d897f549f50dc\rxjava-2.2.12.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.11.2\e6235e5eb3cf3edd2a95cd0dc96bc48aeb309e8a\jackson-datatype-jsr310-2.11.2.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.11.2\d4c1933a8d62db65c3d5a5cd809511e021a189c0\jackson-datatype-jdk8-2.11.2.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.11.3\4f7b27416934dc929bb6c2d2c5fe521829e6a4ec\jackson-databind-2.11.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-rx-java2\3.9.4\23652ff4c8e26757430d712b33cd458a483cc1a\vertx-rx-java2-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-mysql-client\3.9.4\faf538b79a232a977b73449c4dfe32c4f9346aaa\vertx-mysql-client-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.micronaut\micronaut-core\2.1.3\dd1bfa7a7bd4b4c875e6a0046690c98a4560a2f7\micronaut-core-2.1.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.26\a78a8747147d2c5807683e76ec2b633e95c14fe9\snakeyaml-1.26.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\javax.inject\javax.inject\1\6975da39a7040257bd51d21a231b76c915872d38\javax.inject-1.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler-proxy\4.1.53.Final\24007d9b48de8694e62c0796e5e7bc51c1b0f369\netty-handler-proxy-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http2\4.1.53.Final\97612c9c5b07cd7c7822542fa373b3263ccb8da0\netty-codec-http2-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http\4.1.53.Final\9f62cacb250ec65bdb368a178d2453535c365947\netty-codec-http-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns\4.1.53.Final\73fd6fc1d9e8742b41a696cc5ef5525e190a1a24\netty-resolver-dns-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.1.53.Final\106846090e4bab23537d52da281616a001611e0c\netty-handler-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport\4.1.53.Final\856f737f7c512f2e2b970df254f15fc558e991c\netty-transport-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-buffer\4.1.53.Final\a28d2694ff1bc95c627108b01949de3697b4c232\netty-buffer-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver\4.1.53.Final\fe243ee1fddf47e3d54ec83d9f42ef35bcb5ac3e\netty-resolver-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-common\4.1.53.Final\f5aac2cd268483ded1f76dacc5c9eb27899dee72\netty-common-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.11.3\c2351800432bdbdd8284c3f5a7f0782a352aa84a\jackson-core-2.11.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-common\1.4.10\6229be3465805c99db1142ad75e6c6ddeac0b04c\kotlin-stdlib-common-1.4.10.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.github.luben\zstd-jni\1.4.4-7\f7e9d149c0182968cc2a8706d3ffe82f5c9f01eb\zstd-jni-1.4.4-7.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.lz4\lz4-java\1.7.1\c4d931ef8ad2c9c35d65b231a33e61428472d0da\lz4-java-1.7.1.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.xerial.snappy\snappy-java\1.1.7.3\241bb74a1eb37d68a4e324a4bc3865427de0a62d\snappy-java-1.1.7.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.reactivestreams\reactive-streams\1.0.3\d9fb7a7926ffa635b3dcaa5049fb2bfa25b3e7d0\reactive-streams-1.0.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.11.3\25d4e9c777e7a8805c4a000a8629d3009c779c9b\jackson-annotations-2.11.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-rx-gen\3.9.4\936daa8d34278cc5eeb0cd0186b1f5cbdc36a60d\vertx-rx-gen-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-sql-client\3.9.4\bf18b5f809003d0a61b8d0293469c10504b2a8cb\vertx-sql-client-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.github.spotbugs\spotbugs-annotations\4.0.3\755cc5d84d32b31beeaf8597181f0fc4eac98e16\spotbugs-annotations-4.0.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-socks\4.1.53.Final\669ea5cd9137c57d5b2dd71b11ed59adf1d70f85\netty-codec-socks-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec\4.1.53.Final\47aca7eb6f3a4ea623195906dd9caf3a1863e187\netty-codec-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-dns\4.1.53.Final\7d051b78643b035e0adf0bb2caec3c295b4972de\netty-codec-dns-4.1.53.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\io.vertx\vertx-codegen\3.9.4\7d7a578d0d55970af838968689a1c70a2756413d\vertx-codegen-3.9.4.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305\3.0.2\25ea2e8b0c338a877313bd4672d3fe056ea78f0d\jsr305-3.0.2.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\org.mvel\mvel2\2.3.1.Final\3b1a1cf9b3da25500e2703a9d7c26a486b3719f9\mvel2-2.3.1.Final.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-kotlin\2.11.2\470e6cb1482e883ed006817bae7bb143ad75b8c0\jackson-module-kotlin-2.11.2.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.3\7c4f3c474fb2c041d8028740440937705ebb473a\logback-classic-1.2.3.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\com.typesafe\config\1.4.0\a8b341fe81552834edc231193afd6f56a96f0eff\config-1.4.0.jar;C:\Users\Cast\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.3\864344400c3d4d92dfeb0a305dc87d953677c03c\logback-core-1.2.3.jar;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1\lib\idea_rt.jar" com.mybank.ApplicationKt
Connected to the target VM, address: '127.0.0.1:50902', transport: 'socket'
Failure: [Ljava.lang.StackTraceElement;@5e7e473e
nov 16, 2020 7:20:59 PM io.vertx.core.impl.BlockedThreadChecker
WARNING: Thread Thread[vert.x-eventloop-thread-0,5,main]=Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 74391 ms, time limit is 2000 ms
io.vertx.core.VertxException: Thread blocked
    at java.base@11.0.6/java.io.FileOutputStream.writeBytes(Native Method)
    at java.base@11.0.6/java.io.FileOutputStream.write(FileOutputStream.java:354)
    at java.base@11.0.6/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
    at java.base@11.0.6/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
    at java.base@11.0.6/java.io.PrintStream.write(PrintStream.java:561)
    at java.base@11.0.6/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233)
    at java.base@11.0.6/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312)
    at java.base@11.0.6/sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
    at java.base@11.0.6/java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:184)
    at java.base@11.0.6/java.io.PrintStream.write(PrintStream.java:606)
    at java.base@11.0.6/java.io.PrintStream.print(PrintStream.java:745)
    at java.base@11.0.6/java.io.PrintStream.println(PrintStream.java:899)
    at app//com.mybank.ApplicationKt$main$1.handle(Application.kt:28)
    at app//com.mybank.ApplicationKt$main$1.handle(Application.kt)
    at app//io.vertx.sqlclient.impl.SqlResultHandler.fail(SqlResultHandler.java:103)
    at app//io.vertx.sqlclient.impl.SqlResultHandler.handle(SqlResultHandler.java:89)
    at app//io.vertx.sqlclient.impl.SqlResultHandler.handle(SqlResultHandler.java:33)
    at app//io.vertx.sqlclient.impl.command.CommandBase.fail(CommandBase.java:31)
    at app//io.vertx.sqlclient.impl.PoolBase$1.onFailure(PoolBase.java:94)
    at app//io.vertx.sqlclient.impl.PoolBase$CommandWaiter.handle(PoolBase.java:120)
    at app//io.vertx.sqlclient.impl.PoolBase$CommandWaiter.handle(PoolBase.java:102)
    at app//io.vertx.core.impl.FutureImpl.tryFail(FutureImpl.java:195)
    at app//io.vertx.core.impl.FutureImpl.fail(FutureImpl.java:125)
    at app//io.vertx.sqlclient.impl.ConnectionPool.lambda$check$0(ConnectionPool.java:216)
    at app//io.vertx.sqlclient.impl.ConnectionPool$$Lambda$100/0x00000008001f6440.handle(Unknown Source)
    at app//io.vertx.mysqlclient.impl.MySQLConnectionFactory.lambda$connect$0(MySQLConnectionFactory.java:144)
    at app//io.vertx.mysqlclient.impl.MySQLConnectionFactory$$Lambda$101/0x00000008001f5840.handle(Unknown Source)
    at app//io.vertx.core.impl.FutureImpl.tryFail(FutureImpl.java:195)
    at app//io.vertx.core.impl.FutureImpl.fail(FutureImpl.java:125)
    at app//io.vertx.core.impl.FutureImpl.handle(FutureImpl.java:178)
    at app//io.vertx.core.impl.FutureImpl.handle(FutureImpl.java:21)
    at app//io.vertx.core.net.impl.NetClientImpl.doFailed(NetClientImpl.java:243)
    at app//io.vertx.core.net.impl.NetClientImpl.lambda$failed$8(NetClientImpl.java:239)
    at app//io.vertx.core.net.impl.NetClientImpl$$Lambda$109/0x0000000800225840.handle(Unknown Source)
    at app//io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)
    at app//io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
    at app//io.vertx.core.impl.EventLoopContext$$Lambda$99/0x00000008001f6c40.run(Unknown Source)
    at app//io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
    at app//io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
    at app//io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
    at app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base@11.0.6/java.lang.Thread.run(Thread.java:834)

Disconnected from the target VM, address: '127.0.0.1:50902', transport: 'socket'

Process finished with exit code 0

显然,我检查了 mysql 是否真的在端口设置中侦听,并且我创建了我设置的数据库和表

netstat -an |find /i "listening"
 TCP    0.0.0.0:6603           0.0.0.0:0              LISTENING
 TCP    [::]:6603              [::]:0                 LISTENING

构建.gradle

plugins {
    id "org.jetbrains.kotlin.jvm" version "1.4.10"
    id "org.jetbrains.kotlin.kapt" version "1.4.10"
    id "org.jetbrains.kotlin.plugin.allopen" version "1.4.10"
    id "com.github.johnrengelman.shadow" version "6.1.0"
    id "io.micronaut.application" version '1.0.5'
}

version "0.1"
group "com.mybank"

repositories {
    mavenCentral()
    jcenter()
}

micronaut {
    testRuntime "junit5"
    processing {
        incremental true
        annotations "com.mybank.*"
    }
}

dependencies {
    implementation("io.micronaut:micronaut-validation")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("io.micronaut:micronaut-runtime")
    implementation("javax.annotation:javax.annotation-api")

    implementation("io.micronaut.sql:micronaut-vertx-mysql-client")
    //implementation("io.micronaut.configuration:micronaut-vertx-mysql-client")
    compile 'io.vertx:vertx-lang-kotlin:3.9.4'

    implementation("io.micronaut.kafka:micronaut-kafka")
    runtimeOnly("ch.qos.logback:logback-classic")
    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
    testImplementation("io.micronaut:micronaut-http-client")
}

mainClassName = "com.mybank.ApplicationKt"
java {
    sourceCompatibility = JavaVersion.toVersion('11')
}

compileKotlin {
    kotlinOptions {
        jvmTarget = '11'
    }
}
compileTestKotlin {
    kotlinOptions {
        jvmTarget = '11'
    }
}

亮点

...
    implementation("io.micronaut.sql:micronaut-vertx-mysql-client")
    compile 'io.vertx:vertx-lang-kotlin:3.9.4'

Docker-compose.yml(这里可能不相关)

version: '3.2'

services:
   db:
      image: mysql:8.0
      container_name: appsDB
      restart: always
      ports:
       - '6603:3306'
      environment:
        MYSQL_ROOT_PASSWORD: q

   app:
      depends_on:
       - db
      image: phpmyadmin/phpmyadmin
      container_name: phpmyadmin
      restart: always
      ports:
       - '8080:80'
      environment:
        PMA_HOST: db
  • 在前两条评论后编辑

包 com.mybank

import io.vertx.kotlin.mysqlclient.mySQLConnectOptionsOf
import io.vertx.kotlin.sqlclient.poolOptionsOf
import io.vertx.mysqlclient.MySQLClient
import io.vertx.mysqlclient.MySQLPool

fun main(args: Array<String>) {
//  build()
//      .args(*args)
//      .packages("com.mybank")
//      .start()

    var connectOptions = mySQLConnectOptionsOf(database = "mydb",
            host = "localhost",
            password = "q", port = 6603,
            user = "root")

    var poolOptions = poolOptionsOf(maxSize = 5)

    var client = MySQLPool.pool(connectOptions, poolOptions)


    client.query("INSERT INTO mytable('id','name') VALUES ('2','Jimis2')").execute { ar ->
        if (ar.succeeded()) {
            var rows = ar.result()
            var lastInsertId = rows.property(MySQLClient.LAST_INSERTED_ID)
            println("Last inserted id is: ${lastInsertId}")
        } else {
            println("Failure: ${ar.cause().printStackTrace()}")
        }
    }

    client.query("SELECT * FROM mytable WHERE id=1").execute { ar ->
        if (ar.succeeded()) {
            var result = ar.result()
            println("Got ${result.size()} rows ")
        } else {
            println("Failure: ${ar.cause().stackTrace}")
        }

        // Now close the pool
        client.close()
    }

    Thread.sleep(5000)

}

似乎 execute() 从未运行过

4

0 回答 0