首页 > 其他分享 >在 Spring Boot 中使用 Dataway 配置数据查询接口

在 Spring Boot 中使用 Dataway 配置数据查询接口

时间:2023-07-07 22:22:18浏览次数:47  
标签:Hasor Spring Dataway 配置 Boot 接口

 

Dataway介绍

Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。 整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。
这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。
Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。 从而避免了从数据存取到前端接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。

Dataway 是 Hasor 生态中的一员,因此在 Spring 中使用 Dataway 首先要做的就是打通两个生态。根据官方文档中推荐的方式我们将 Hasor 和 Spring Boot 整合起来。

第一步:引入相关依赖

 

hasor-spring 负责 Spring 和 Hasor 框架之间的整合。
hasor-dataway 是工作在 Hasor 之上,利用 hasor-spring 我们就可以使用 dataway了。

第二步:配置 Dataway,并初始化数据表

dataway 会提供一个界面让我们配置接口,这一点类似 Swagger 只要jar包集成就可以实现接口配置。找到我们 springboot 项目的配置文件 application.properties

 

Dataway 一共涉及到 5个可以配置的配置项,但不是所有配置都是必须的。

其中 HASOR_DATAQL_DATAWAY、
HASOR_DATAQL_DATAWAY_ADMIN 两个配置是必须要打开的,默认情况下 Datawaty 是不启用的。

Dataway 需要两个数据表才能工作,下面是这两个数据表的简表语句。下面这个 SQL 可以在 dataway的依赖 jar 包中 “
META-INF/hasor-framework/mysql” 目录下面找到,建表语句是用 mysql 语法写的。

 

第三步:配置数据源

作为 Spring Boot 项目有着自己完善的数据库方面工具支持。我们这次采用 druid + mysql + spring-boot-starter-jdbc 的方式。

首先引入依赖

 

然后增加数据源的配置

 

如果项目已经集成了自己的数据源,那么可以忽略第三步。

第四步:把数据源设置到 Hasor 容器中

Spring Boot 和 Hasor 本是两个独立的容器框架,我们做整合之后为了使用 Dataway 的能力需要把 Spring 中的数据源设置到 Hasor 中。

首先新建一个 Hasor 的 模块,并且将其交给 Spring 管理。然后把数据源通过 Spring 注入进来。

 

Hasor 启动的时候会调用 loadModule 方法,在这里再把 DataSource 设置到 Hasor 中。

第五步:在SprintBoot 中启用 Hasor

 

这一步非常简单,只需要在 Spring 启动类上增加两个注解即可。

第六步:启动应用

应用在启动过程中会看到 Hasor Boot 的欢迎信息

 

在后面的日志中还可以看到类似下面这些日志。

 

当看到 “dataway api workAt /api/” 、 dataway admin workAt /interface-ui/ 信息时,就可以确定 Dataway 的配置已经生效了。

第七步:访问接口管理页面进行接口配置

在浏览器中输入 “
http://127.0.0.1:8080/interface-ui/” 就可以看到期待已久的界面了。

 

第八步:新建一个接口

Dataway 提供了2中语言模式,我们可以使用强大的 DataQL 查询语言,也可以直接使用 SQL 语言(在 Dataway 内部 SQL 语言也会被转换为 DataQL 的形式执行。)

 

同样的方式我们使用 DataQL 的方式需要这样写:

 

其中 var query = @@sql()<% ... %> 是用来定义SQL外部代码块,并将这个定义存入 query 变量名中。 <% %> 中间的就是 SQL 语句。

最后在 DataQL 中调用这个代码块,并返回查询结果。

当接口写好之后就可以保存发布了,为了测试方便,我选用 GET 方式。

 

接口发布之后我们直接请求:
http://127.0.0.1:8080/api/demos,就看到期待已久的接口返回值了。

 

最后总结

经过上面的几个步骤我们介绍了如何基于 Spring Boot 项目使用 Dataway 来简单的配置接口。Dataway 的方式确实给人耳目一新,一个接口竟然可以如此简单的配置出来无需开发任何一行代码,也不需要做任何 Mapping 实体映射绑定。

标签:Hasor,Spring,Dataway,配置,Boot,接口
From: https://www.cnblogs.com/nifrecxgh/p/17536190.html

相关文章

  • spring-八股文
    对IOC的理解inverseofcontrol,控制翻转,将bean的生成交给spring管理,例如,@autowired自动装配的mapper层对象。好处:单例bean可以有效复用,减少对象生成的时间成本。各种bean还有自身的应用场景。单例bean与单例模式spring自动装配出来的对象全都会指向同一个单例bean,不强制约......
  • 使用 Spring Boot 和 Dubbo 进行集成
    1.创建一个SpringBoot项目,可以使用SpringInitializr(https://start.spring.io/)生成一个初始的项目结构。2.在pom.xml中添加Dubbo和相关依赖:<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId>......
  • springboot 常见面试题
    1.什么是SpringBoot?它的主要特点是什么?-SpringBoot是一个基于Spring框架的开源框架,用于简化Spring应用程序的开发和部署。-其主要特点包括自动配置、约定优于配置、快速开发、独立运行、简化部署等。2.SpringBoot如何简化Spring应用程序的开发和部署?-SpringB......
  • Springcloud2021+Nacos2.2+Dubbo3+Seata1.6实现分布式事务
    示例代码地址:https://gitee.com/gtnotgod/Springcloud-alibaba.git更详细参考Gitee完整的项目:https://gitee.com/gtnotgod/Springcloud-alibaba.git官网下载Nacoshttps://nacos.io/zh-cn/index.html压缩包解压:配置Nacos:**/nacos/conf/application.properties#********......
  • 安卓boot.img镜像文件提取
    环境要求:Python3解压刷机包解压刷机包的目录结构如下:/home/ubuntu/94e982775c704e889534f291f5522de1├──META-INF│  └──com│  └──android│  ├──metadata│  ├──metadata.pb│  └──otacert├─......
  • SpringBoot3 学习笔记(开始配置)
    一、使用工具IntelliJ,下载JDK20https://www.oracle.com/java/technologies/downloads/二、采用SpringInitializr新建项目, 三、勾选web和lombok四、点Finish后等待新建目录如下,删掉无用的目录和文件:五、最终如下: 六、右键com.wind,新建controller.HellWorldController......
  • 要在pbootcms中验证是否已登录,并将微信扫码登录的情况纳入考虑
    要在pbootcms中验证是否已登录,并将微信扫码登录的情况纳入考虑,可以按照以下步骤进行操作:首先,在pbootcms的应用目录下创建一个wxlogin.php文件,用于处理微信扫码登录的逻辑。请参考上一个回答中的代码示例。修改pbootcms的Auth中间件,用于验证用户是否已登录。在app/Http/Mi......
  • spring的工具类BeanUtils.copyProperties 非基本数据类型时的坑
    复现前准备三个类,Student、Source、Target。Source和Target里面包含一个相同的非基本类型的字段(如下面示例中的stu字段)publicclassStudent{privateStringname;publicStudent(Stringname){this.name=name;}publicStringgetName(){......
  • Ubuntu系统部署springcloud+nacos遇到的问题。
    1,部署上的jar包运行正常,但是通过浏览器不能访问,telnet+IP+端口连接不通。小皮面板访问后台接口也是不通但是小皮面板可以通过浏览器访问。具体问题暂未解决。2,改用docker部署,将jar包和前端打的包,nacos,redis等打成镜像,放进docker里对外映射出端口可以正常访问。在用docker部署过......
  • SpringMVC学习巩固(页面跳转——重定向与转发)
    **要求方法返回值为String**默认:逻辑视图视图解析器找到对应的页面Handler中返会的String类型为跳转到的页面eg:return"hello";则执行方法后页面会跳转到hello.html重定向forward:@GetMapping("forward")publicStringforward(Stringpath){Sy......