V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
twogoods
V2EX  ›  分享创造

基于 mysql 异步驱动的非阻塞 Mybatis 了解一下

  •  
  •   twogoods · 2018-08-29 16:35:15 +08:00 · 3529 次点击
    这是一个创建于 2067 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然 spring5 也推出了 WebFlux 这一套异步技术栈,这种极大提升吞吐的玩法在 node 里玩的风生水起,但 java 世界里异步依旧不是主流,Vertx 倒是做了不少对异步的支持,但是其对于数据访问层的封装依旧还是挺精简的,传统的 javaer 还是受不了这种没有对象映射的工具库,于是我尝试将 Mybatis 移植到了异步驱动上,让数据访问层的工作变得更简单一些。给个例子:

    @Sql(User.class)
    public interface CommonMapper {
       @Select(columns = "id,age,username")
       @OrderBy("id desc")
       @Page
       @ModelConditions({
               @ModelCondition(field = "username", criterion = Criterions.EQUAL),
               @ModelCondition(field = "maxAge", column = "age", criterion = Criterions.LESS),
               @ModelCondition(field = "minAge", column = "age", criterion = Criterions.GREATER)
       })
       void query(UserSearch userSearch, DataHandler<List<User>> handler);
    }
    

    上面是 mapper 接口定义,方法的最后一个参数因为异步的原因所以变成了一个回调,不同的是有很多注解来表达 sql,看到这些注解应该不难猜出 sql 语句吧。如果不喜欢你当然可以继续使用 mapper.xml 的方式来写 sql。

    更多内容移步代码库吧~

    3 条回复    2018-08-30 14:57:07 +08:00
    ZSeptember
        1
    ZSeptember  
       2018-08-30 12:16:18 +08:00
    Java 没有 async 写这个还是太麻烦了。
    可以考虑使用 kotlin
    tabris17
        2
    tabris17  
       2018-08-30 14:23:20 +08:00
    看到回调就头大一圈
    twogoods
        3
    twogoods  
    OP
       2018-08-30 14:57:07 +08:00
    @ZSeptember 是啊,java 本身还没有协程,管你 rx 还是 future 那代码都受不了....看这个帖子的热度感觉 java 里玩异步还是冷门啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2473 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:11 · PVG 09:11 · LAX 18:11 · JFK 21:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.