mybatis中传递普通参数和实体List

来源:互联网 发布:北京景观设计软件培训 编辑:程序博客网 时间:2024/05/18 09:38

最近工作中有一个场景要求我在接口中传递一个Long类型的参数和一个实体List。

这个方法大概长这样:

List<AbilityDetail> queryInactiveAbility(@Param("appId")Long appId, @Param("abilitys")List<AbilityDetail> abilitys);


大家会注意到我这里用了Param注解,这会使我们在之后的映射文件中更方便地获取这两个参数。

然后在AbilityPackageMapper.xml这个映射文件中我是这么操作的

<select id="queryInactiveAbility" resultMap="com.tydic.portal.gateway.intfce.AbilityMapper.AbilityDetailMap">SELECTash.ability_idFROM 
ability_subscribe_history ashWHEREash.inactive_time > now()<if test=" appId!=null and '' != appId">AND ash.app_id =#{appId}</if>ANDash.ability_id in<foreach collection="abilitys" item="abilityDetail" index="index"open="(" separator="," close=")">#{abilityDetail.abilityId,jdbcType=BIGINT}</foreach>ANDash.ability_rule_id in<foreach collection="abilitys" item="abilityDetail" index="index"open="(" separator="," close=")">#{abilityDetail.abilityRuleId,jdbcType=BIGINT}</foreach></select>
其中appId直接获取(我们在接口中使用了注解),然后使用foreach标签对list进行循环,collection的属性值与注解相同,item可以自己命名,

然后通过#获取list中的实体AbilityDetail,再通过.获取其abilityId属性,就这样我们就完成了普通属性和List的同时传递。

如果有用顶一下吧。




原创粉丝点击