腾讯 APIJSON 插件 apijson-query-spring-boot-starter 开源
腾讯 APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。
为各种增删改查提供了完全自动化的万能 API,零代码实时满足千变万化的各种新增和变更需求。
能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目。
自 2016 年开源 6 年多来发展迅速,目前 15.8K Star 位居 400W Java 开源项目前 100。
国内 腾讯、华为、阿里巴巴、美团、字节跳动、百度、京东、网易、快手、圆通 等 和
国外 Google, Microsoft, Amazon, Paypal, IBM, Shopee 等数百名知名大厂员工点了 Star,
也有 腾讯、华为、字节跳动、Microsoft、Zoom、知乎 等 工程师 / 专家 / 架构师 提了 PR/Issue,
还被 腾讯、华为、百度、SHEIN、快手、中兴、传音、圆通、美图 等各大知名厂商用于各类项目。
apijson-query-spring-boot-starter
插件介绍
一个快速构建apijson查询条件的插件
通常我们在数仓或者其他场景中会使用apijson提供通用接口,这时候会有其他应用需要调用apijson接口,虽然apijson提供通用的json格式参数调用, 但是由于apijson单独实现一套语法规则,需要学习成本,此插件的目的就是像使用mybatis plus构建sql查询参数一样,去构建apijson查询条件,无需任何apijson语法学习,即可完成通用查询请求。
查询构建使用示例
- 基于ApiJsonQueryLambdaWrapper构建查询
public class Test { public void testQuery() { ApiJsonQueryLambdaWrapper queryWrapper = ApiJsonQueryWrappers.lambdaQuery() .setSchema("模式名") .setTableName("表名") .setBiSigns("业务标识") .select("查询列") .eq("条件判断", "条件列", "条件值") // ... ; } }
- 基于ApiJsonQueryStringWrapper构建查询
public class Test { public void testQuery() { ApiJsonQueryStringWrapper queryWrapper = ApiJsonQueryWrappers.query() .setSchema("模式名") .setTableName("表名") .setBiSigns("业务标识") .select("查询列") .eq("条件判断", "条件列", "条件值") //... ; } }
- 基于ApiJsonQueryMapWrapper构建查询
public class Test { public void testQuery() { Map<String, Object> param = new HashMap<>(); //apijson原生语法 param.put("键", "值"); //... ApiJsonQueryMapWrapper queryWrapper = ApiJsonQueryWrappers.mapQuery() .setQueryParam(param); } }
方法调用使用示例
提供ApiJsonQueryTemplate模板方法
- 查询一条数据 getOne(查询条件,转换类型)
public class Test { @Autowired private ApiJsonQueryTemplate apiJsonQueryTemplate; public void testGetOne() { User user = apiJsonQueryTemplate.getOne(queryWrapper, User.class); } }
- 查询条数 count(查询条件)
public class Test { @Autowired private ApiJsonQueryTemplate apiJsonQueryTemplate; public void testCount() { Long count = apiJsonQueryTemplate.count(queryWrapper); } }
- 查询列表 getList(查询条件,转换类型)
public class Test { @Autowired private ApiJsonQueryTemplate apiJsonQueryTemplate; public void testGetList() { List<User> userList = apiJsonQueryTemplate.getList(queryWrapper, User.class); } }
- 查询分页列表 getPageList(查询条件,当前页,页大小,转换类型)
public class Test { @Autowired private ApiJsonQueryTemplate apiJsonQueryTemplate; public void testGetPageList() { ApiJsonPageInfo<User> userPageList = apiJsonQueryTemplate.getPageList(queryWrapper, 1, 10, User.class); } }
扩展查询数据源示例
提供默认基于http形式的apijson数据源查询方法,如果不满足需求,可继承DwQueryDao接口,实现getData方法,然后再装配Bean
public class AutoConfiguration { @Resource private ApiJsonQueryProperties apiJsonQueryProperties; @Bean public ApiJsonQueryTemplate apiJsonQueryTemplate() { log.debug("加载自定义查询数据源实现...."); ApiJsonQueryTemplate apiJsonQueryTemplate = new ApiJsonQueryTemplate(); //自定义查询数据源 ApiJsonQueryDao customQuery = new CustomQueryImpl(apiJsonQueryProperties); apiJsonQueryTemplate.setDao(customQuery); return apiJsonQueryTemplate; } }
注解说明
- ApiJsonTableName 表名注解
@ApiJsonTableName( value = "表名", schema = "模式名", biSigns = "业务标识", desc = "描述" ) public class TestDO{ } //注解设置完成后,只需要在构建查询条件时 setTableName(TestDO.class)即可
- ApiJsonTableField 字段名注解
@ApiJsonTableName( value = "表名", schema = "模式名", biSigns = "业务标识", desc = "描述" ) public class TestDO { //将name映射为name2查询 @ApiJsonTableField(value = "name2") private String name; //忽略该字段查询 @ApiJsonTableField(exist = false) private String value; } //注解设置完成后,只需要在构建查询条件时 setTableName(TestDO.class)即可
使用说明
在maven中加入以下依赖:
<dependency> <groupId>io.gitee.mingbaobaba</groupId> <artifactId>apijson-query-spring-boot-starter</artifactId> <version>版本</version> </dependency>
创作不易,打开以下链接右上角点亮 ⭐️ 来支持/收藏下吧~
https://gitee.com/mingbaobaba/apijson-query-spring-boot-starter
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache NetBeans 19 发布
Apache NetBeans 19现已正式发布。NetBeans 是一个主要面向 Java 的集成开发环境,同时支持 C/C++、PHP、JavaScript 和其他编程语言。 一些更新内容包括: Gradle 配置常规 "run" / JavaExec-style tasks 以进行单类执行。保留 runSingle 以实现兼容性#6003 Gradle Tooling API 8.3-rc-1#6254 继续使用 Groovy DSL for Gradle#6307 在新的 Gradle 项目中配置最新发布的包装器#6333 Maven 升级到 maven-indexer 7.0.1 并改进索引下载#4999 改进enable-preview Java 修复#5802 升级到 apache lucene 9.6.0 和 maven-indexer 7.0.2 + more#5931 将捆绑的 Maven 升级到 3.9.2#5936 使用 SMO 服务进行类名和 SHA1 查询#5984 Maven 远程索引过滤器#5922 #5978: Maven/priming 优化#599...
- 下一篇
KCC@长沙开源读书会&openKylin爱好者沙龙圆满举办!
2023年9月9日,由openKylin社区联合开源社举办的KCC@长沙开源读书会&openKylin爱好者沙龙圆满举办。这是KCC@长沙首次正式进入公众视野,开展开源交流活动,也是openKylin社区长沙首场线下爱好者沙龙,长沙地区及其周边开源爱好者齐聚活动现场,聆听读书分享、参与开源话题讨论。 活动开场,开源社理事、执行长庄表伟向参会嘉宾介绍了开源社是什么样的社区、以“立足中国、贡献全球”为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。 openKylin社区技术委员会委员刘晓东就openKylin社区宗旨及运营情况进行介绍,社区旨在以“共创”为核心,以“开源聚力、共创未来”为社区理念,在开源、自愿、平等、协作的基础上,通过开源、开放的方式与合作伙伴构建系统生态和创新技术体系,推动Linux开源技术及其软硬件生态繁荣发展。 破冰交流环节,全体参会人员分别介绍了自己的职业、讲述各自与开源的故事,并分享了自身对参与开源的看法与憧憬。 读书分享环节,「开源之道」主创适兕就《open source licensing: sof...
相关文章
文章评论
共有0条评论来说两句吧...