需要的功能其实就是数据聚合,以及按需查询,按需返回(方便前端使用)。 搭建的 demo 使用到的工具是 SpringBoot+GraphQL+Mybatis+PgSQL
定义 scheam 文件,程序解析 scheam,Fechers 里像以前的 restful 服务一样调用 service,通过 Mybatis 从数据库获取数据,然后按照 scheam 定义的结构将数据塞到 Object 或者 List 中。
如上述实现方式,发现一个问题就是并没有简化代码实现。当我的数据库中有改动,比如增加字段。按照上述实现方式,我需要修改 scheam 、修改 JavaBean 、修改 Fechers 数据获取逻辑、修改 MyBatis 中 xml 的 sql 语句。而这种实现方式可能最直观的好处就是前端使用更加方便了,但对于服务来说,修改一个数据库字段,需要修改的内容太多了。
有没有什么实现思路,让服务做更少的事情?比如修改数据库字段后,对于代码的修改很少,或者尽可能的不修改代码,而是通过配置去响应修改内容(类似于热部署的需求)。 简而言之,尽可能的实现自动化或半自动化?
1
nl101531 2020-08-18 10:00:09 +08:00
你这种结构,DB 都变了自然什么都要跟着变化。
想不变就需要动态化,将 DB 这一层与 GraphQL 解耦,可以理解为 service 成调用的都是一个通用查询服务,这个查询服务可以动态配置化。不过这样改动又得不偿失。。。 最近也在做这方面事情,graphQL 带来的好处就是一个入口,按需获取字段,自动关联查询,没发现其他方便的地方。 |
2
nl101531 2020-08-18 10:00:47 +08:00
我微信 mrdear-cn,可以加我交流下。
|