动态配置化API接口、实现数据热更新

自己做的一个小Demo,要是有人感兴趣联系我一起扩展做大。个人想开源出来但是怕写的不好被骂,如果有现成能实现这样功能的框架一定告诉我,我就不写了

DataPorters1.0

核心理念:做数据的搬运工 不需要映射实体类!不用编写接口!

  • 只做数据层: 省略数据层的单表CURD工作,不干涉其他业务接口编写

  • 热更新: 数据库结构发生改变时,无需修改代码,可通过前端配置APi后直接获取

  • 非技术人员可配置化生成APi: 学习简单的配置规则后,接口无需技术人员开发,只需要通过配置获取数据即可

  • 无需代码编写: 集成后无需编写代码,只需要配置数据库链接即可

  • 支持SQL优化: DataPorters只是将收到的参数动态拼接成SQL语句,你可以随心所欲的修改或扩展

  • 简化集成: 自动生成所需配置类,可配合MybatisPlus等代码生成器,实现其他业务编写

  • 你完全可以把DataPorters看做一个工具类,帮你实现动态单表所有的增删改查 (#`O′)

从何而来:

  • 工作中,总是因为:需要加写一个简单查询接口、实体类需要多加一个字段、同一个表不同的字段输出接口、用代码生成器表结构变动还需要修改实体!不停的:测试、提交、发版。明明就是简单数据层单表CURD为什么要这么烦!
  • 我开始思考一个问题,为何不能在客户端发起请求的时候告诉服务端:我需要哪些字段?我需要哪张表的数据?我有几个查询条件?我需要模糊查询还是子查询?我是否需要分页?于是乎有了DataPorters1.0

设计思路:

  • 主要做了那些事?(就两件事)
    • 前端:在请求API中配置,所需要的数据结构
    • 后端:将Api中的配置转换为SQL语句,放入Mybatis中执行。(有手就行)
  • 在设计初期最大的困扰就是。如何将需要的配置参数从客户端传递给服务端。搞的太复杂怕是前端骂人,如何简单优雅同时又可以保证表结构的隐私安全呢?这个时候GraphQL的传递方式给了灵感,没错我照着抄的。

API配置案例:

  • 单条件查询:

    • url:http://127.0.0.1/commonGet
      
      所携带的参数:{
      	"fields":"id,name,age",
      	"tableName":"userinfo",
      	"conditions":{"id":1}
      }
      	
      所生成的SQL:SELECT id,name,age FROM userinfo WHERE 1=1 and id=1
      
  • 多条件查询:

    • url:http://127.0.0.1/commonGet
      
      所携带的参数:{
      	"fields":"id,name,age",
      	"tableName":"userinfo",
      	"conditions":{"name":{"key":"张三%","special":"like"},"age":{"key":"1,2,3,4","special":"in"}}
      }
      	
      所生成的SQL:SELECT id,name,age FROM userinfo WHERE 1=1 and name like '张三%' and age in (1,2,3,4)
      

目前实现了什么?

  • 支持分页
  • 多条件查询
  • 批量写入
  • 单表修改
  • 单表删除
  • 以后慢慢扩展…

你可能感兴趣的:(动态CURD,热更新,配置化API,java,mysql,intellij,idea,mybatis,graphql)