前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Quarkus学习二 - 一个响应式的应用程序

Quarkus学习二 - 一个响应式的应用程序

原创
作者头像
eeaters
发布2022-06-14 14:57:47
4760
发布2022-06-14 14:57:47
举报
文章被收录于专栏:阿杰阿杰
  • 参考网址
  • 实现功能
  • 流程
    • 生成项目
    • 修改配置文件
    • 编写初始化sql脚本
    • 编写实体类及Web端口
    • 项目启动及接口调用
  • 总结

网址

getting-startted-reactive

实现功能

基于MySQL数据库之上,对一个表进行简单的操作

流程

生成项目

官方网站用的是 PostgreSQL , 这里改成了MySQL,其他不变 选择依赖:

  1. RESTEasy Reactive
  2. RESTEASY Reactive Jackson
  3. Hibernate Reactive with Panache
  4. Reactive MySQL client

修改配置文件

主要是为了修改mysql的配置:

代码语言:javascript
复制
quarkus.datasource-db-kind=mysql
quarkus.hibernate-orm.database.generation=drop-and-create

quarkus.datasource.reactive.url=mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=CTT
quarkus.datasource.username=root
quarkus.datasource.password=root

编写初始化sql脚本

在resources目录下建import.sql文件, 内容如下:

代码语言:javascript
复制
INSERT INTO fruit(id, name) VALUES (1, 'Cherry');
INSERT INTO fruit(id, name) VALUES (2, 'Apple');
INSERT INTO fruit(id, name) VALUES (3, 'Banana');

编写实体类及Web端口

代码语言:javascript
复制
@Entity
@Cacheable
public class Fruit extends PanacheEntity {

    @Column(length = 40, unique = true)
    public String name;

}

// --------------------

@Path("/fruits")
@ApplicationScoped
public class FruitResource {

   @GET
    @Path("list")
    public Uni<List<Fruit>> list() {
        return Fruit.listAll(Sort.by("name"));
    }

    @GET
    @Path("get/{id}")
    public Uni<Fruit> get(Long id) {
        return Fruit.findById(id);
    }

    @GET
    @Transactional
    @Path("/delete/{id}")
    public Uni<Long> delete(Long id) {
        return Fruit.delete("id", id);
    }


    @GET
    @Transactional
    @Path("/update/{id}")
    public Uni<Integer> update(Long id) {
        return Fruit.update("name= 'update' where id = ?1", id);
    }


}

项目启动及接口调用

  • .\mvnw quarkus:dev
  • http://localhost:8080/fruits/list 返回:
代码语言:javascript
复制
[{"id":2,"name":"Apple"},{"id":3,"name":"Banana"},{"id":1,"name":"Cherry"}]

总结

  1. 示例中数据库对象应该是充血模型吧.panache之前没有用过,只能安排上了
  2. Uni这个对象在smallrye库下,又是一个响应式的编程库

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网址
  • 实现功能
  • 流程
    • 生成项目
      • 修改配置文件
        • 编写初始化sql脚本
          • 编写实体类及Web端口
            • 项目启动及接口调用
            • 总结
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档