Hasor【环境搭建 02】Dataway接口配置服务使用DataQL聚合查询引擎(Mybatis执行器实现分页查询举例说明+问题分析)

简介: Hasor【环境搭建 02】Dataway接口配置服务使用DataQL聚合查询引擎(Mybatis执行器实现分页查询举例说明+问题分析)

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
    }
  }
}
目录
相关文章
|
2月前
|
XML Java 数据库连接
MyBatis的常见配置
MyBatis 常见配置包括数据库连接、类型别名、映射器等核心模块,合理配置可提升开发效率与系统性能。主要内容涵盖核心配置文件结构、关键配置项详解及配置优先级说明。
345 4
|
3月前
|
SQL XML Java
通过MyBatis的XML配置实现灵活的动态SQL查询
总结而言,通过MyBatis的XML配置实现灵活的动态SQL查询,可以让开发者以声明式的方式构建SQL语句,既保证了SQL操作的灵活性,又简化了代码的复杂度。这种方式可以显著提高数据库操作的效率和代码的可维护性。
279 18
|
8月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Mybatis-Plus适配崖山配置
【YashanDB知识库】Mybatis-Plus适配崖山配置
|
8月前
|
Java 数据库连接 微服务
微服务——MyBatis配置——事务管理
本段内容主要介绍了事务管理的两种类型:JDBC 和 MANAGED。JDBC 类型直接利用数据源连接管理事务,依赖提交和回滚机制;而 MANAGED 类型则由容器全程管理事务生命周期,例如 JEE 应用服务器上下文,默认会关闭连接,但可根据需要设置 `closeConnection` 属性为 false 阻止关闭行为。此外,提到在使用 Spring + MyBatis 时,无需额外配置事务管理器,因为 Spring 模块自带的功能可覆盖上述配置,且这两种事务管理器类型均无需设置属性。
141 0
|
8月前
|
Java 数据库连接 数据库
微服务——MyBatis配置——多环境配置
在 MyBatis 中,多环境配置允许为不同数据库创建多个 SqlSessionFactory。通过传递环境参数给 SqlSessionFactoryBuilder,可指定使用哪种环境;若忽略,则加载默认环境。`environments` 元素定义环境配置,包括默认环境 ID、事务管理器和数据源类型等。每个环境需唯一标识,确保默认环境匹配其中之一。代码示例展示了如何构建工厂及配置 XML 结构。
141 0
|
8月前
|
缓存 Java 数据库连接
微服务——MyBatis配置——常见配置
本文介绍了 MyBatis 的常见配置及其加载顺序。属性配置优先级为:方法参数传递的属性 &gt; resource/url 属性中配置 &gt; properties 元素中指定属性。同时列举了多个关键配置项,如 `cacheEnabled`(全局缓存开关)、`lazyLoadingEnabled`(延迟加载)、`useGeneratedKeys`(使用 JDBC 自动生成主键)等,并详细说明其作用、有效值及默认值。这些配置帮助开发者优化 MyBatis 的性能与行为。
142 0
|
4月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
458 13
|
5月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
235 1
|
8月前
|
人工智能 Java 数据库连接
MyBatis Plus 使用 Service 接口进行增删改查
本文介绍了基于 MyBatis-Plus 的数据库操作流程,包括配置、实体类、Service 层及 Mapper 层的创建。通过在 `application.yml` 中配置 SQL 日志打印,确保调试便利。示例中新建了 `UserTableEntity` 实体类映射 `sys_user` 表,并构建了 `UserService` 和 `UserServiceImpl` 处理业务逻辑,同时定义了 `UserTableMapper` 进行数据交互。测试部分展示了查询、插入、删除和更新的操作方法及输出结果,帮助开发者快速上手 MyBatis-Plus 数据持久化框架。
627 0
|
8月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
1103 0