爱意满满的作品展示区。
twogoods

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

  •  
  •   twogoods · Aug 29, 2018 · 4055 views
    This topic created in 2838 days ago, the information mentioned may be changed or developed.

    虽然 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 replies    2018-08-30 14:57:07 +08:00
    looplj
        1
    looplj  
       Aug 30, 2018
    Java 没有 async 写这个还是太麻烦了。
    可以考虑使用 kotlin
    tabris17
        2
    tabris17  
       Aug 30, 2018
    看到回调就头大一圈
    twogoods
        3
    twogoods  
    OP
       Aug 30, 2018
    @ZSeptember 是啊,java 本身还没有协程,管你 rx 还是 future 那代码都受不了....看这个帖子的热度感觉 java 里玩异步还是冷门啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:33 · PVG 11:33 · LAX 20:33 · JFK 23:33
    ♥ Do have faith in what you're doing.