我正在处理时态版本化数据,因此我的大多数查询都需要时间点和组ID。如何将这些传递给我的嵌套多对一查询?
例如:
@Select("select * "
+ "from type1 "
+ "where effective_date <= #{0, typeHandler=...} "
+ "and termination_date > #{0, typeHandler=...}")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "groupId", column = "group_id"),
// ...
@Result(property = "type2", column = "type2_group_id", javaType = Type2.class,
one = @One(select = "com...mapper.Type2Mapper.getByGroupId")) // **
// ...
})
这样Type2Mapper有:
@Select(...)
Type2 getByGroupId(Date date, Long groupId);
// **标识的行必须同时传递传入其中的Date以及type2_group_id。很显然,我可以重新安排事情或者无论做什么都可以完成这项工作,我只是希望我不必改变我的模型以包含一个Long type2GroupId然后我填充type2实例。事实。
有什么想法吗?
答案 0 :(得分:0)
我找不到任何方法,所以我添加了对它的支持:https://github.com/mybatis/mybatis-3/pull/203
@Result(property = "type2", column = "type2_group_id", javaType = Type2.class,
one = @One(select = "com...mapper.Type2Mapper.getByGroupId",
parameterProvider = @OneParameterProvider(
type = TemporalParameterProvider.class, method = "getParametersWithDate"
)))
和
public class TemporalParameterProvider {
public Object getParametersWithDate(Object value, Class<?> type, List<Object> originalParameters) {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("0", originalParameters.get(0));
parameters.put("1", value);
return parameters;
}
}
这也可用于查询原始列值的计算,并希望其他用例也可用。