EasyRelation 是一个简单、高效的自动关联数据框架,可以通过一行代码,自动关联查询并填充需要的数据,对于性能影响极小,且省略了大量冗余代码。
该项目适应于当前对象中的字段需要关联查询,并赋值到当前对象中,数据来源可以是枚举、数据库、RPC接口 等等任意来源。
<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 主要有三步:
InjectRelation
实例,调用其 injectRelation
方法,自动注入关联数据当开发人员需要进行关联查询时,往往需要编写大量的冗余代码来处理数据之间的关系。这不仅浪费时间和精力,还会影响项目的可维护性和可扩展性。 EasyRelation 是一个简单、高效的自动关联数据框架,可以通过一行代码,自动关联查询并填充需要的数据,对于性能影响极小,且省略了大量的冗余代码。 该框架适应于当前对象中的字段需要关联查询,并赋值到当前对象的字段中,数据来源可以是枚举、数据库、RPC 接口等
主要内容:规范化,定义关系在这一章中,我们将了解学习相关数据的基础知识。 在讨论和创建不同数据之间的关系之前,让我们来看看为什么需要关联数据。 这一切都回归规范化。 规范化 数据库规范化或简单规范化是组织关系数据库的列(属性)和表(关系)以最小化数据冗余的过程。 这是将数据分解到多个表格以提高整体性能,完整性和持久性的过程。 规范化是在数据库中组织数据的过程。 这包括创建表并根据设计的规则在这些表之间建立关系,以保护数据并
我想在我的编码中添加对话框。对话框可以弹出。假设用户按下ok按钮后对话框将关闭,但对话框将自动关闭。这是我的密码。有什么问题吗?
从《UML用户指南》第5章中,我发现了以下内容: 为了模拟结构关系, > 对于每对类,如果您需要从一个对象导航到另一个对象,请指定两者之间的关联。这是关联的数据驱动视图。 对于每对类,如果一个类的对象需要与另一个类的对象交互,而不是作为操作的参数,请指定两者之间的关联。这更像是一种由行为驱动的关联视图 这是我对第一类关联的理解,通过以下示例:一个类,User,具有三个属性,其中一个是另一个类,Ad
Entity Framework Core 允许你在模型中使用导航属性来下载关联的实体。加载关联数据有三种通用的 O/RM 模式。 贪婪加载 意味着关联数据会作为初始查询的一部分从数据库加载 显式加载 意味着关联数据会在迟些时候从数据库显式加载 延迟加载 意味着关联数据的加载是透明的,当访问导航属性的时候其数据才从数据库加载。EF Core 还不能使用延迟加载 提示 你可以在 GitHub 上查阅
我有一个bean,我必须自己创建它(使用),它有和注释。 如何让Spring处理我的bean中的这些注释? 相关问题: 在Spring,我可以从自动编织的豆子里自动编织新的豆子吗?