Hasor 框架 Dataway 使用可参考我之前分享的 SpringBoot 集成 Hasor【Dataway 无代码接口工具】配置及问题解决 。这里记录一下使用DataQL遇到的问题。
1.举例及说明
接口的 DataQL 如下:
问题及说明1: 【GreenPlum数据库的方言要使用postgresql 】之前的分享 DataQL 聚合查询引擎执行器报错原因分析及解决 解释了为什么,感兴趣的可以看看。
// SQL 执行器切换为分页模式及首页页面设置 hint FRAGMENT_SQL_QUERY_BY_PAGE = true hint FRAGMENT_SQL_QUERY_BY_PAGE_NUMBER_OFFSET = 1 hint FRAGMENT_SQL_PAGE_DIALECT = "postgresql" // 统一转驼峰 // 问题及说明2:通过下边的查询SQL测试得出结论,转驼峰的规则是,全部字母小写下划线后的字母大写,特别要注意的是【这里的驼峰只针对数据查询的字段,分页字段默认是驼峰的,下面附上测试】。 // default、upper、lower、hump hint FRAGMENT_SQL_COLUMN_CASE = "hump" // 定义查询SQL // 问题及说明3:对mybatis的支持并不完善,支持的标签有<select> <insert> <delete> <update> <if> 和<foreach>相关,<where>标签测试是不支持的。 // 问题及说明4:Date类型数据的查询,需要使用 TO_CHAR 函数,否则是毫秒值。 var dataSetFun = @@mybatis(keyword,futurestartdate) <% <select> SELECT firstrecommendfield AS first_recommend_field, secondrecommendfield AS second_REcommend_Field, TO_CHAR(futurestartdate, 'yyyy-MM-dd') AS future_start_date FROM yz_test_match WHERE futurestartdate is not null <if test="keyword != null and keyword != ''"> AND firstrecommendfield like concat('%','${keyword}','%') </if> <if test="futurestartdate != null and futurestartdate != ''"> AND futurestartdate = '${futurestartdate}' </if> ORDER BY futurestartdate </select> %> // 创建分页查询对象 // 问题及说明5:参数的传递规则,顺序很重要,从左到右是SQL内的参数顺序。 var pageQuery = dataSetFun(${keyword},${futurestartdate},${pageSize},${pageNumber}); // 设置分页信息 run pageQuery.setPageInfo({ "pageSize" : #{pageSize}, "currentPage" : #{pageNumber} }); // 执行分页查询 var pageData = pageQuery.data(); // 查询分页信息 var pageInfo = pageQuery.pageInfo(); // 返回结果封装 // 问题及说明6:结果会封装到之前的value内。 return { "pageData" : pageData, "pageInfo" : pageInfo };
参数如下:
这里的参数不用注意顺序。
{ "keyword": "", "futurestartdate": "2021-04-18", "pageSize": 1, "pageNumber": 1 }
执行结果:
{ "success": true, "message": "OK", "location": null, "code": 0, "lifeCycleTime": 220, "executionTime": 214, "value": { "pageData": [ { "firstRecommendField": "豫A5VT98", "secondRecommendField": "460020603684395", "futureStartDate": "2021-04-18" } ], "pageInfo": { "enable": true, "pageSize": 1, "totalCount": 5175, "totalPage": 5175, "currentPage": 1, "recordPosition": 0 } } }
2.测试 FRAGMENT_SQL_COLUMN_CASE 设置
只贴出改变的设置:
hint FRAGMENT_SQL_COLUMN_CASE = "upper"
结果: 我们可以看到pageData的字段全部大写了,pageInfo的字段还是驼峰。
{ "success": true, "message": "OK", "location": null, "code": 0, "lifeCycleTime": 206, "executionTime": 199, "value": { "pageData": { "FIRST_RECOMMEND_FIELD": "豫A5VT98", "SECOND_RECOMMEND_FIELD": "460020603684395", "FUTURE_START_DATE": "2021-04-18" }, "pageInfo": { "enable": true, "pageSize": 1, "totalCount": 5175, "totalPage": 5175, "currentPage": 1, "recordPosition": 0 } } }