Dataway 让 Spring Boot 不再需要 Controller、Service、DAO、Mapper 简单接口直接开发。

news2024/9/22 11:37:07

新的sql语法可以先看一下官网,部署起来之后会用到Dataql:

DataQL - 数据查询语言https://www.dataql.net/先看一下效果

 接下来来实现一下。


1 创建spring boot项目  导入依赖


        <!--begin dataWay-->
        <!--hasor-spring 负责 Spring 和 Hasor 框架之间的整合-->
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-spring</artifactId>
            <version>4.1.3</version>
        </dependency>
        <!--hasor-dataway 是工作在 Hasor 之上,利用 hasor-spring 我们就可以使用 dataway了。-->
        <dependency>
            <groupId>net.hasor</groupId>
            <artifactId>hasor-dataway</artifactId>
            <version>4.1.3-fix20200414</version><!-- 4.1.3 包存在UI资源缺失问题 -->
        </dependency>
        <!--end dataWay-->


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

2.配置文件,安排数据源和ui界面配置,这里ui和swagger差不多。

 我这里没有用yml ,下面的几条配置可能会带有黄色下划线不用纠结

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1
spring.datasource.druid.initial-size=3
spring.datasource.druid.max-active=10
spring.datasource.druid.max-wait=60000
spring.datasource.druid.min-idle=3
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3310/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root

# 启用 Dataway 功能(默认不启用)
HASOR_DATAQL_DATAWAY=true
# 开启 ui 管理功能(注意生产环境必须要设置为 false,否则会造成严重的生产安全事故)
HASOR_DATAQL_DATAWAY_ADMIN=true

# (可选)API工作路径
HASOR_DATAQL_DATAWAY_API_URL=/api/
# (可选)ui 的工作路径,只有开启 ui 管理功能后才有效
HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/

 3spring boot开启功能

在启动类上面添加注解

@EnableHasor()    // 在Spring 中启用 Hasor
@EnableHasorWeb() // 将 hasor-web 配置到 Spring 环境中,Dataway 的 UI 是通过 hasor-web 提供服务。

 4,在你连接的数据库添加两个表,这两个表来放你的api地址

建表语句如下

CREATE TABLE `interface_info` (
    `api_id`          int(11)      NOT NULL AUTO_INCREMENT   COMMENT 'ID',
    `api_method`      varchar(12)  NOT NULL                  COMMENT 'HttpMethod:GET、PUT、POST',
    `api_path`        varchar(512) NOT NULL                  COMMENT '拦截路径',
    `api_status`      int(2)       NOT NULL                  COMMENT '状态:0草稿,1发布,2有变更,3禁用',
    `api_comment`     varchar(255)     NULL                  COMMENT '注释',
    `api_type`        varchar(24)  NOT NULL                  COMMENT '脚本类型:SQL、DataQL',
    `api_script`      mediumtext   NOT NULL                  COMMENT '查询脚本:xxxxxxx',
    `api_schema`      mediumtext       NULL                  COMMENT '接口的请求/响应数据结构',
    `api_sample`      mediumtext       NULL                  COMMENT '请求/响应/请求头样本数据',
    `api_option`      mediumtext       NULL                  COMMENT '扩展配置信息',
    `api_create_time` datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `api_gmt_time`    datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    PRIMARY KEY (`api_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API';

CREATE TABLE `interface_release` (
    `pub_id`          int(11)      NOT NULL AUTO_INCREMENT   COMMENT 'Publish ID',
    `pub_api_id`      int(11)      NOT NULL                  COMMENT '所属API ID',
    `pub_method`      varchar(12)  NOT NULL                  COMMENT 'HttpMethod:GET、PUT、POST',
    `pub_path`        varchar(512) NOT NULL                  COMMENT '拦截路径',
    `pub_status`      int(2)       NOT NULL                  COMMENT '状态:0有效,1无效(可能被下线)',
    `pub_type`        varchar(24)  NOT NULL                  COMMENT '脚本类型:SQL、DataQL',
    `pub_script`      mediumtext   NOT NULL                  COMMENT '查询脚本:xxxxxxx',
    `pub_script_ori`  mediumtext   NOT NULL                  COMMENT '原始查询脚本,仅当类型为SQL时不同',
    `pub_schema`      mediumtext       NULL                  COMMENT '接口的请求/响应数据结构',
    `pub_sample`      mediumtext       NULL                  COMMENT '请求/响应/请求头样本数据',
    `pub_option`      mediumtext       NULL                  COMMENT '扩展配置信息',
    `pub_release_time`datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间(下线不更新)',
    PRIMARY KEY (`pub_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 发布历史。';

create index idx_interface_release on interface_release (pub_api_id);

 5 创建一个类,将你的数据源个这个矿建,你的数据源现在是在springboot里面管理的。现在需要复制过来。如下

import net.hasor.core.ApiBinder;
import net.hasor.core.DimModule;
import net.hasor.db.JdbcModule;
import net.hasor.db.Level;
import net.hasor.spring.SpringModule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;

@DimModule
@Component
public class DatawayModule implements SpringModule {

    @Autowired
    private DataSource dataSource = null;

    @Override
    public void loadModule(ApiBinder apiBinder) throws Throwable {
        // .DataSource form Spring boot into Hasor
        apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
    }

}

 6.启动项目不保错。显示如下就是成功。


 7访问你的web界面地址,跟我配置的如下

http://localhost:8080/interface-ui/#http://localhost:8080/interface-ui/#


 8,这里可以写直接写sql,发布在你的服务上面。语法支持sql和dataql可以好好学习一下。

发布之后你可以访问一下,还有就是看看数据库

 

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/377546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作系统】进程管理

进程与线程 1. 进程 进程是资源分配的基本单位 进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态&#xff0c;所谓的创建进程和撤销进程&#xff0c;都是指对 PCB 的操作。 下图显示了 4 个程序创建了 4 个进程&#xff0c;这 4 个进程可以并发地执行…

实战|掌握Linux内存监视:free命令详解与使用技巧

文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出四. free在脚本中的应用总结前言 大家…

LAMP项目部署实战2

部署Discuz!论坛 一、Discuz&#xff01;论坛概述&#xff1a; 1&#xff09;Discuz&#xff01;论坛是基于phpmysql进行开发的一套开源的论坛系统。 2&#xff09;下载源代码&#xff1a; 下载地址&#xff1a;码云DiscuzX: Discuz! X 官方 Git&#xff0c;简体中文 UTF8 版…

2023年,35岁测试工程师只能被“优化裁员”吗?肯定不是····

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…

mongo数据备份

目录1. mongo单机安装2. mongo(replica set)部署3. mongodump 与 mongorestore工具使用4.rsync工具使用服务端配置客户端配置客户端推送与拉取文件5. 完整mongo全量备份脚本恢复全量备份数据6. 完整mongo增量备份脚本(基于oplog)恢复增量备份数据7.备份策略1. mongo单机安装 m…

高数:极限的定义

目录 极限的定义&#xff1a; 数列极限的几何意义&#xff1a; 由极限的定义得出的极限的两个结论&#xff1a; ​编辑 极限的第三个结论&#xff1a; 例题 方法1&#xff1a; ​编辑 方法2&#xff1a; ​编辑 方法3&#xff1a; ​编辑 极限的定义&#xff1a; 如何理…

JDK8常用新特性的原理与代码演示

Lambda Lambda 表达式&#xff0c;也可称为闭包&#xff0c;Lambda 允许把函数作为一个方法的参数。 格式 (参数列表) -> {代码块} (parameters) -> expression 或 (parameters) ->{ statements; }前置条件 lambda表达式是一段执行某种功能的代码块&#xff0c;需要…

数据结构与算法——4时间复杂度分析2(常见的大O阶)

这篇文章是时间复杂度分析的第二篇。在前一篇文章中&#xff0c;我们从0推导出了为什么要用时间复杂度&#xff0c;时间复杂度如何分析以及时间复杂度的表示三部分内容。这篇文章&#xff0c;是对一些常用的时间复杂度进行一个总结&#xff0c;相当于是一个小结论 1.常见的大O…

ESFP型人格的特征,ESFP型人格的优势和劣势分析

ESFP型人格的特征ESFP&#xff08;表演者型人格&#xff09;是人群中的开心果。他们外向&#xff0c;友善&#xff0c;包容&#xff0c;有他们在的地方总是充满着活泼的氛围。ESFP对于新的朋友&#xff0c;新的环境适应良好&#xff0c;他们是完完全全的社交动物&#xff0c;对…

【数据库原理 | MySQL】一文打通 DDL语句

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 书接上文介绍了数据库的前世今生&#xff0c;本文讲解SQL语句中的DDL语句 文章目录二、SQL2.1 SQL通用语法2.2 SQL的分类三、 …

I.MX6ULL_Linux_系统篇(19) kernel编译及Makefile分析

Linux 内核 Linux 由 Linux 基金会管理与发布&#xff0c; Linux 官网为 https://www.kernel.org&#xff0c;所以你想获取最新的Linux 版本就可以在这个网站上下载&#xff0c;网站界面如图所示&#xff1a; 从图中可以看出最新的稳定版 Linux 已经到了 6.2&#xff0c;NXP …

Python常用标准库-sys库一文详解

目录 前言 一、Sys库概述 二、Sys查看版本信息 1.sys.version获取Python版本信息 2.sys.api_version获取解释器中C的API版本 3.sys.getwindowsversion系统功能版本 4.sys.hexversion()获取Python解释器的版本值 5.sys.implementation获取当前正在运行的Python解释器的实现…

Redis源码---如何实现一个性能优异的Hash表

目录 前言 Redis 如何实现链式哈希&#xff1f; 什么是哈希冲突&#xff1f; 链式哈希如何设计与实现&#xff1f; Redis 如何实现 rehash&#xff1f; 什么时候触发 rehash&#xff1f; rehash 扩容扩多大&#xff1f; 渐进式 rehash 如何实现&#xff1f; 前言 Hash …

数据处理 |遍历所有文件夹及子目录文件夹方法总结与实例代码详解

深度学习中不可避免的数据预处理~1. glob.glob()方法 2. pathlib中的Path方法3. os.walk()方法1. glob.glob()方法 语法glob.glob(pathname)&#xff08;多指定文件类型&#xff0c;查找jpg,png,txt,json等&#xff09;缺点&#xff1a;查找文件较慢2. 路径操作库pathlib中的Pa…

【计算机三级网络技术】 第四篇 路由设计技术基础

文章目录一、分组转发二、路由选择1.理想的路由算法的基本特征2.路由算法的度量标准3.路由算法分类&#xff1a;4.IP路由选择与路由汇聚(重点)三、自治系统与Internet的路由选择协议1.自治系统2.路由选择协议的分类四、内部网关协议1.RIP的基本概念2.RIP的原理3.RIP的运行过程五…

Android Lmkd 低内存终止守护程序

一、低内存终止守护程序 Android 低内存终止守护程序 (lmkd) 进程可监控运行中的 Android 系统的内存状态&#xff0c;并通过终止最不必要的进程来应对内存压力大的问题&#xff0c;使系统以可接受的性能水平运行。 所有应用进程都是从zygote孵化出来的&#xff0c;记录在AMS…

Android问题笔记 - 打开Android Studio先弹出项目选择框

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断…

leetcode 427. Construct Quad Tree(构建四叉树)

刚看到题的时候是懵的&#xff0c;这也太长了。到底是要表达什么呢。 不妨把这个矩阵看成一个正方形的图片&#xff0c;想象你在处理图片&#xff0c;从整体逐步到局部。 刚开始看一整张图片&#xff0c;如果是全0或全1&#xff0c;这个就是叶子节点&#xff0c;怎么表达叶子节…

网络货运平台“降本提质引流增值”秘籍是什么?

2月24日&#xff0c;2022&#xff08;第五届&#xff09;中国网络货运平台年会在厦门举行&#xff0c;数据宝作为中物联副会长单位受邀参加峰会&#xff0c;数据宝轮值CEO肖斌发表题为“网络货运平台数字化创新应用实践分享”的主题分享。 据交通运输部统计&#xff0c;截止到2…

某建筑设计研究院“综合布线管理软件”应用实践

某建筑设计研究院有限公司&#xff08;简称“某院”&#xff09;隶属于国务院国资委直属的大型骨干科技型中央企业。“某院”前身为中央直属设计公司&#xff0c;创建于1952年。成立近70年来&#xff0c;始终秉承优良传统&#xff0c;致力于推进国内勘察设计产业的创新发展&…