代码拉取完成,页面将自动刷新
EasyRelation 是一个简单、高效的自动关联数据框架,可以通过一行代码,自动关联查询并填充需要的数据,对于性能影响极小,且省略了大量冗余代码。
该项目适应于当前对象中的字段需要关联查询,并赋值到当前对象中,数据来源可以是枚举、数据库、RPC接口 等等任意来源。
如果该项目帮助了您,希望能点个 Star 鼓励一下!
<dependency>
<groupId>cn.easii</groupId>
<artifactId>easy-relation-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
假设有一个订单模型(Order
),其只保存了用户名,需要关联查询昵称:
@Data
public class Order {
private String orderId;
private String username;
@Relation(provider = 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
方法,自动注入关联数据个人网站:代码笔耕
vx : Clue8a796d01
公众号:代码笔耕
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。