当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

EasyRelation

自动关联数据框架
授权协议 Apache
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 国产
投 递 者 云宜人
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

 相关资料
  • 主要内容:规范化,定义关系在这一章中,我们将了解学习相关数据的基础知识。 在讨论和创建不同数据之间的关系之前,让我们来看看为什么需要关联数据。 这一切都回归规范化。 规范化 数据库规范化或简单规范化是组织关系数据库的列(属性)和表(关系)以最小化数据冗余的过程。 这是将数据分解到多个表格以提高整体性能,完整性和持久性的过程。 规范化是在数据库中组织数据的过程。 这包括创建表并根据设计的规则在这些表之间建立关系,以保护数据并

  • 我想在我的编码中添加对话框。对话框可以弹出。假设用户按下ok按钮后对话框将关闭,但对话框将自动关闭。这是我的密码。有什么问题吗?

  • 从《UML用户指南》第5章中,我发现了以下内容: 为了模拟结构关系, > 对于每对类,如果您需要从一个对象导航到另一个对象,请指定两者之间的关联。这是关联的数据驱动视图。 对于每对类,如果一个类的对象需要与另一个类的对象交互,而不是作为操作的参数,请指定两者之间的关联。这更像是一种由行为驱动的关联视图 这是我对第一类关联的理解,通过以下示例:一个类,User,具有三个属性,其中一个是另一个类,Ad

  • Entity Framework Core 允许你在模型中使用导航属性来下载关联的实体。加载关联数据有三种通用的 O/RM 模式。 贪婪加载 意味着关联数据会作为初始查询的一部分从数据库加载 显式加载 意味着关联数据会在迟些时候从数据库显式加载 延迟加载 意味着关联数据的加载是透明的,当访问导航属性的时候其数据才从数据库加载。EF Core 还不能使用延迟加载 提示 你可以在 GitHub 上查阅

  • 我有一个bean,我必须自己创建它(使用),它有和注释。 如何让Spring处理我的bean中的这些注释? 相关问题: 在Spring,我可以从自动编织的豆子里自动编织新的豆子吗?