OneToOne
# 一对一数据查询
一对一数据查询,正所谓一对一查询也就是查询的结果会有映射关系下面来挨个看看
# of
场景: 在进行数据查询之前需要构造的查询条件使用OneToOne.of()进行构造 注:
- 排除复杂条件查询之外的条件都会通过SFunction返回值进行匹配
- 并且返回的SFunction返回值会作为Map中Key的类型
final OneToOne<UserInfo, Long, UserInfo> of = OneToOne.of(UserInfo::getId);
// 代表后续的查询条件除去复杂条件查询之外 都会通过id进行匹配 并且返回的实体的ID会作为Map中Key的类型
# eq
场景 拼接条件:等于
Map<Long, UserInfo> idUserMap = OneToOne.of(UserInfo::getId).eq(1L).query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全部查询出来放到一个Map中,Map的key为id,value为UserInfo
# value
场景:映射返回字段,也就是value并不想要返回实体类,而是返回实体类中的某个字段
Map<Long, String> userIdNameMap = OneToOne.of(UserInfo::getId).in(userIds).value(UserInfo::getName).query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全都查询出来放到一个Map中,Map的key为id,value为name
# in
场景:拼接条件:in,也就是查询某个字段在某个集合中的数据(批量查询)
Map<Long, String> userIdNameMap =
OneToOne.of(UserInfo::getId)
.in(userIds)
.value(UserInfo::getName)
.query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全都查询出来放到一个Map中,Map的key为id,value为name
# condition
场景:复杂查询自定义拼接
Map<Long, String> userIdNameMap =
OneToOne.of(UserInfo::getId)
.eq(1L)
.value(UserInfo::getName)
.condition(w -> w.le(UserInfo::getAge, 22))
.query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1同时年龄小于等于22的数据查询出来放到一个Map中,Map的key为id,value为name
# like
场景:拼接条件:模糊查询
Map<Long, String> userIdNameMap =
OneToOne.of(UserInfo::getId)
.eq(1L)
.like("a")
.value(UserInfo::getName)
.condition(w -> w.le(UserInfo::getAge, 22))
.query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1同时年龄小于等于22并且id中包含a的数据查询出来放到一个Map中,Map的key为id,value为name
# query
场景:拼接完条件之后,执行查询 注: 传去参数与之前One与Many不同,OneToOne可以传入一个Map工厂去指定通过什么类型去构造出Map对象对数据进行接收
Map<Long, Boolean> query =
OneToOne.of(UserInfo::getId)
.in(userIds)
.condition(w -> w.select(UserInfo::getId, UserInfo::getName))
.value(userInfo -> userInfo.getName() != null && userInfo.getName().contains("a"))
.query(LinkedHashMap::new);
// 将UserInfo实体对应表中的id属性所对应的字段等于1同时年龄小于等于22并且id中包含a的数据查询出来,Map的key为id,value为当前用户的名字是否不为Null并且包含a字符串并且将返回数据通过LinkedHashMap进行接收
# 测试用例地址
上次更新: 2024/03/29, 09:17:32