dataWay

一、 dataWay介绍

  1. 这种模式的革新使得开发一个接口不必在编写任何形式的代码,只需要配置一条 DataQL 查询即可完成满足前端对接口的需求。 从而避免了从数据库到前端之间一系列的开发配置任务,例如:Mapper、DO、DAO、Service、Controller 统统不在需要。
    在这里插入图片描述

二、工程搭建

工程依赖:

<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>hasor-spring</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>hasor-dataway</artifactId>
    <version>4.2.1</version>
</dependency>

配置文件:

 是否启用 Dataway 功能(必选:默认false)
HASOR_DATAQL_DATAWAY: true

 是否开启 Dataway 后台管理界面(必选:默认false)
HASOR_DATAQL_DATAWAY_ADMIN: true

dataway  API工作路径(可选,默认:/api/)
HASOR_DATAQL_DATAWAY_API_URL: /api/

dataway-ui 的工作路径(可选,默认:/interface-ui/)
HASOR_DATAQL_DATAWAY_UI_URL: /interface-ui/

SQL执行器方言设置(可选,建议设置)
HASOR_DATAQL_FX_PAGE_DIALECT: mysql

界面介绍:

在这里插入图片描述
在这里插入图片描述

三、语法介绍

DataQL语法
1.基础语法

// 声明一个 SQL
使用daiteQL语法包裹sql语句,防止sql注入
var dataSet = @@sql(itemCode) <%
select * from category where co_code = #{itemCode} limit 10;
%>

// 执行这个 SQL,并返回结果
return dataSet(${itemCode});

完全继承@@sql功能兼容mybatis部分标签实现动态sql

var dimSQL = @@mybatis(userName)<%
    <select>
        select * from user_info where `name` like concat('%',#{userName},'%') order by id asc
    </select>
%>;

目前版本只支持 标签
2. 在var上面设置全局变量可以设置不同的效果
//定义分页 使当前执行的语句支持分页不需要在使用mysql的原始分页,如果使用原始分页需要单独执行一条count()来获取总条数

hint FRAGMENT_SQL_QUERY_BY_PAGE=true 

var dataSet = @@sql(itemCode) <%
    select * from category where co_code = #{itemCode} limit 10;
%>;
 
// 执行这个 SQL,并返回结果
return dataSet(${itemCode});

var pageQuery = dimSQL(itemCode);
// 设置分页信息
run pageQuery.setPageInfo({
    "pageSize"    : ${pageSize}, // 页大小
    "currentPage" : ${pageNo}   // 第几页
});

return {
    "pageData": pageQuery.data(),
    "pageInfo": pageQuery.pageInfo()
}

这个分页的参数会存储到执行参数的返回变量中 var定义的参数
Data存储数据
PageInfo存储分页信息

这个分页的起始页数 是从0开始的,如果想让他从1开始的话可以在分页的开启的下一句加上

hint FRAGMENT_SQL_QUERY_BY_PAGE_NUMBER_OFFSET = 1

设置当前页码的偏移量+1

// 统一转驼峰
hint FRAGMENT_SQL_COLUMN_CASE=“hump”
选项值 默认 含义
default 是 全部列名保持大小写敏感,数据库什么样返回就什么样。

upper 全部列名保持大写,如果在转换过程中发生冲突,那么会产生覆盖问题。
lower 全部列名保持小写,如果在转换过程中发生冲突,那么会产生覆盖问题。
hump 全部列名做一次驼峰转换。如:goods_id => goodsId、GOODS_id => goodsId。

//关闭拆包

hint FRAGMENT_SQL_OPEN_PACKAGE = “off”
选项值 默认 含义
off 返回值不拆开,无论返回数据,都以 List/Map 形式返回。
row 返回值拆分到行,如果返回值是多条记录那么行为和 off 相同。
当返回 0 或 1 条记录时,自动解开最外层的 List,返回一个 Object。
column 是 最小粒度到列。当返回结果只有一行一列数据时。只返回具体值。
例如: select count(*) 返回 int 类型

官方文档:
https://www.hasor.net/doc/pages/viewpage.action?pageId=1573208

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值