【问题标题】:Why not integrate Mybatis into the system of quarkus?为什么不将 Mybatis 集成到 quarkus 系统中呢?
【发布时间】:2021-01-13 20:25:48
【问题描述】:

很多项目都采用MyBatis,如果可以集成MyBatis,可以快速将基于Spring Framework的应用转为基于Quarkus Framework的应用。

【问题讨论】:

    标签: orm mybatis quarkus


    【解决方案1】:

    在 Quarkus 问题板上有一个扩展提案:https://github.com/quarkusio/quarkus/issues/1958

    您可以对其做出反应 +1 以表示您的兴趣并关注它。

    甚至还有一个 PR 为其提供支持,但几个月以来似乎没有任何进展。

    【讨论】:

      【解决方案2】:

      当然,你可以将Mybatis集成到quarkus系统中。

      quarkus-mybatis 0.0.1第一个版本于 2020 年 10 月发布。 最新版 quarkus-mybatis 0.0.92021 年 6 月发布。

      许多公司在他们的技术堆栈中使用 Quarkus,包括 Backbase、Biting Bit 和 JustChunks。Vodafone Greek 用 Quarkus 替换了 Spring Boot。

      演示:

      使用https://code.quarkus.io/创建新的 Quarkus 项目

      将 quarkus-mybatis 扩展添加到您的项目中。这里我使用 Maven 进行依赖管理。

      Maven

      <dependency>
          <groupId>io.quarkiverse.mybatis</groupId>
          <artifactId>quarkus-mybatis</artifactId>
          <version>0.0.9</version>
      </dependency>
      

      数据源配置:

      application.properties
      quarkus.datasource.db-kind = h2
      quarkus.datasource.username = sa
      # quarkus.datasource.password =
      quarkus.datasource.jdbc.url = jdbc:h2:mem:test
      quarkus.mybatis.initial-sql=schema.sql
      

      schema.sql:

      create table users
      (
         id integer not null,
         firstName varchar(255) not null,
         lastName varchar(255) not null,
         emailId varchar(255) not null,
         primary key(id)
      );
      

      创建用户模型:

      @Getter
      @Setter
      @NoArgsConstructor
      @AllArgsConstructor
      public class User {
      
          private long id;
          private String firstName;
          private String lastName;
          private String emailId;
      
      }
      

      创建用户 MyBatis 存储库:

      @Mapper
      public interface UserRepository {
      
          @Select("select * from users")
          public List<User> findAll();
      
          @Select("SELECT * FROM users WHERE id = #{id}")
          public User findById(long id);
      
          @Delete("DELETE FROM users WHERE id = #{id}")
          public int deleteById(long id);
      
          @Insert("INSERT INTO users(id, firstName, lastName,emailId) " +
                  " VALUES (#{id}, #{firstName}, #{lastName}, #{emailId})")
          public int insert(User user);
      
          @Update("Update users set firstName=#{firstName}, " +
                  " lastName=#{lastName}, emailId=#{emailId} where id=#{id}")
          public int update(User user);
      }
      

      端点:

          @GET
          @Path("/{id}")
          @Produces(MediaType.APPLICATION_JSON)
          public User getUser(@PathParam("id") Long id) {
              return userResource.findById(id);
          }
      
          @PUT
          @Consumes(MediaType.APPLICATION_JSON)
          public void updateUser(User user) {
              userResource.update(user);
          }
      
          @POST
          @Produces(MediaType.APPLICATION_JSON)
          @Consumes(MediaType.APPLICATION_JSON)
          public void addUser(User user) {
             userResource.insert(user);
      
          }
      
          @DELETE
          @Path("/{id}")
          public void deleteUser(@PathParam("id") Long id) {
              userResource.deleteById(id);
          }
      }
      

      构建应用程序 jar 文件: mvn clean package

      启动应用程序: java -jar quarkus-run.jar

      参考,Build REST CRUD API with Quarkus and MyBatis

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多