Java HashMap中的MyBatis参数
在mapper界面中,我有:Java HashMap中的MyBatis参数,java,mysql,mybatis,ibatis,Java,Mysql,Mybatis,Ibatis,在mapper界面中,我有: ArrayList<Item> select(@Param("filterId")int filterId, @Param("filterData")HashMap<String,Object> filterData); 在mapper xml中,我有: <select id="select" parameterType="map" resultMap="RM"> SELECT ... FRO
ArrayList<Item> select(@Param("filterId")int filterId, @Param("filterData")HashMap<String,Object> filterData);
在mapper xml中,我有:
<select id="select" parameterType="map" resultMap="RM">
SELECT ...
FROM ....
WHERE id=#{filterData["id"]}
</select>
没有错误,但结果不是预期的。它返回空集合,但我知道具有此类id的项存在。{filterData[id]}似乎不起作用。我的错误在哪里?我找到了答案:
<select id="select" parameterType="map" resultMap="RM">
SELECT ...
FROM ....
WHERE id=#{filterData.id}
</select>
如果您有纯java类,那么可以将parameterType映射为查询的输入,并像下面这样作为不同的自定义pojo类返回
<select id="getCustomMember" parameterType="com.custom.member" resultMap="custDocMap">
select
customer_id, cust_start_dt, cust_type, src_sys_doc_id,
legal_backer_id, eenv_create_dt
from
web_data..wd_edoc
where
eenv_create_dt = #{member.date}
</select>
如果您的id是从列表中迭代的动态id,您可以使用{filterData.${id}}什么是不期望的?@Konstantin V.Salikhov它返回空集。为什么您的属性被命名为sesultMap?你试过调试吗?在查询时为id分配了什么参数值?@Konstantin V.Salikhov sesultMap-我在提问时犯了错误。filterData是什么?这是地图的钥匙吗?而filterData.id是映射值的id属性?filterData是在注释@ParamfilterData HashMap filterData中指定的,id是其键之一。