@Select("Select distinct X from Table where X= #{param}") @Results({ @Result(column = "X", property = "a", many = @Many(select = "getIdsC")), @Result(column = "X", property = "b", one = @One(select = "getTGN")) }) TG getTG(@Param("param") int param); class TG{ String a; List<Integer> b; }
我检查了它,而对于getTGN
,它返回正确的字符串,为"example"
。但是,对于getIdsC
,它返回null - 看起来是正确的结果,因为没有元素(可能更好的结果是空列表)。
我的问题是
如何强制mybatis返回TG tg
的对象,以便:
tg.a=null, tg.a="example"
。此时它返回null
,但a
字段不为空。
答案 0 :(得分:0)
您只需要反转a和b的声明类型或映射。 你能看到不一致吗?
property =“a”,很多 ==&gt; 字符串 a;
property =“b”, one ==&gt; 列表 b;
这样可以更好地运作:
String&lt; =&gt; @One
列表&lt; =&gt; @Many
这个设置appart,你的代码很好,对象填充得很好,当 getIdsC 没有返回任何结果时,甚至还有一个空列表而不是null。