在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:polymeric开源软件地址:https://gitee.com/youpiao_admin/polymeric开源软件介绍:polymeric介绍polymeric 是一个在DDD实施微服务下跨库跨表的数据聚合实现,使用声明式配置将需要跨库跨表的字段,自动匹配远程数据源,规避良莠不一的聚合方式,降低代码量,polymeric结合mybatis查询结果的前置下,实现远程数据查询并反写到 mybatis 的查询结果中, 提供自由实现分页没有任何侵入,实现了轻松跨库,跨表,代码干净清爽并存的解决方案,也是DDD领域驱动思想指导完成微服务设计后各个微服务实现独立自治数据反写的优选方案。 使用说明
<dependency> <groupId>com.cdg.polymeric</groupId> <artifactId>polymeric-spring-boot-starter</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency>
ploymeric: enabled: true #默认开启 guavaCacheNumMaxSize: 1000 #guava缓存的键值数 guavaCacheRefreshWriteTime: 10 #guava更新缓存的下一次时间,分钟 guavaCacheRefreshThreadPoolSize: 10 #guava刷新线程池线程数量
第一种使用方式:聚合服务方: @Polymeric(key = "id",args = Long.class,feign = BasicDataFeignClientService.class,method = "getCustomerNameById") public class CustomerVo { private Long id; @PolymericValue(name = "customerName",enableCache = true) private String customerName; private String address; private String phone;} 远程数据源: @GetMapping(value = "/getCustomerNameById") @ApiOperation(value = "测试聚合组件") public Map getCustomerNameById(@RequestParam(name = "id") Long id) { Map result = new HashMap(); result.put("customerName","wyp"); return result; } @Polymerickey: 远程数据源需要查询的参数args: 远程数据源的参数类型feign:支持openfeign 的feign客户端method: feign客户端下调用的方法名@PolymericValuename:远程数据源需要聚合的字段名称enableCache: 是否开启缓存 注:这里是调用一次远程数据源反写多个字段,比较适合一个vo中多个字段需要跨库跨表查询的场景,当所有字段都开启了缓存,才会走一级缓存,否则至多查询一次远程数据源。 第二种使用方式:聚合服务方: public class CustomerVo { private Long id; @PolymericFiled(key = "id",args = Long.class,feign = BasicDataFeignClientService.class,method = "getCustomerNameById",enableCache = true) private String customerName; private String address; private String phone; } 也可以将查询配置在字段上,此场景比较适合vo至多有一个需要查询的字段,否在推荐使用 @Polymeric @PolymericFiledkey: 远程数据源需要查询的参数args: 远程数据源的参数类型feign:支持openfeign 的feign客户端method: feign客户端下调用的方法名 参与贡献
spring boot 的支持对spring boot 的支持见 https://gitee.com/youpiao_admin/polymeric-spring-boot |
请发表评论