EasyRelation 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
EasyRelation 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
EasyRelation 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具Java开发工具
开源组织
地区 国产
投 递 者 林培烈
适用人群 未知
收录时间 2023-03-27

软件简介

EasyRelation 是一个简单、高效的自动关联数据框架,可以通过一行代码,自动关联查询并填充需要的数据,对于性能影响极小,且省略了大量冗余代码。

该项目适应于当前对象中的字段需要关联查询,并赋值到当前对象中,数据来源可以是枚举数据库RPC接口 等等任意来源。

链接地址

特点

  • 不限制关联查询方式,需要关联的数据可以是任意来源
  • 两级缓存支持,可自由选择使用的缓存
  • 执行效率高,对性能影响极小

快速开始

安装依赖

  • maven
<dependency>
    <groupId>cn.easii</groupId>
    <artifactId>easy-relation-spring-boot-starter</artifactId>
    <version>${easy-relation.version}</version>
</dependency>
 

定义对象

假设有一个订单模型(Order),其只保存了用户名,需要关联查询昵称:

@Data
public class Order {

    private String orderId;

    private String username;

    @Relation(handler = RelationIdentifiers.getUserByUsername, targetField = "nickName",
        condition = {@Condition(field = "username")})
    private String nickName;

}
 

如上定义中,在需要关联查询的字段,添加@Relation注解,指定关联关系,这里的 targetField 表示当前字段需要查询结果中的指定 nickName 属性。

定义数据提供者

定义一个类,继承 DataProvideService,且实现一个查询用户信息的方法,添加 @DataProvider 注解,并指定其唯一标识,

@Component
public class UserInfoDataProvider implements DataProvideService {

    @DataProvider(RelationIdentifiers.getUserByUsername)
    public User getUserByUsername(UserQueryReq req) {
        // 这里可以从任意来源获取值
        if ("admin".equals(req.getUsername())) {
            final User user = new User();
            user.setUsername("admin");
            user.setNickName("管理员");
            return user;
        }
        return null;
    }

}
 

使用

@SpringBootTest
class InjectRelationTest {

    @Autowired
    private InjectRelation injectRelation;

    @Test
    void quickStart() {
        Order order = new Order();
        order.setOrderId("2f453910375641648ab3a2fc6e3328ef");
        order.setUsername("admin");
        injectRelation.injectRelation(order);
        System.out.println(order);  // Order(orderId=2f453910375641648ab3a2fc6e3328ef, username=admin, nickName=管理员)
        Assert.equals(order.getNickName(), "管理员");
    }

}
 

总结

使用 EasyRelation 主要有三步:

  1. 在类结构中配置关联关系
  2. 定义关联查询数据源
  3. 获取 InjectRelation 实例,调用其 injectRelation 方法,自动注入关联数据
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2023/06/13 16:29

EasyRelation 1.1.1 发布,新增自动关联数据特性

EasyRelation 1.1.1 发布,新版本更新日志: 更新 MapStructPlus 版本 1.2.1 --> 1.2.5 添加自动关联数据功能 当想要对一个方法的结果自动关联相关数据时,可以在方法上面增加 @AutoRelation 注解, 框架会对其方法返回的结果数据,自动关联配置的其他数据。 功能基于 SpringAOP 实现。 简单示例: 例如,在查询商品时,需要关联配置的其他店铺等信息 之前 public List<Goods> list(GoodsQuery goodsQuery) { List<Goods...

0
2
发表了资讯
2023/03/27 22:30

EasyRelation 1.0 发布,简单强大的数据关联框架

当开发人员需要进行关联查询时,往往需要编写大量的冗余代码来处理数据之间的关系。这不仅浪费时间和精力,还会影响项目的可维护性和可扩展性。 EasyRelation 是一个简单、高效的自动关联数据框架,可以通过一行代码,自动关联查询并填充需要的数据,对于性能影响极小,且省略了大量的冗余代码。 该框架适应于当前对象中的字段需要关联查询,并赋值到当前对象的字段中,数据来源可以是枚举、数据库、RPC 接口等等任意来源。 特点...

0
7
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
11 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部