mybatis接收set集合并返回

754 阅读1分钟

 

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

今天接到一个查询,就是需要对一组数据的key进行查询;查询还是挺简单的,但接收方式还是挺多的,

首先我们需要对该组数据要查询的字段进行去重,用set接收即可,自带去重很舒服,可以用lambda表达式方便提取集合字段,好比list.stream().map(map -> StringUtil.isNotEmpty(map.get(xxx))).collect(Collectors.toSet());就可以得到该字段对应的组合了。

 接着我们将它作为参数传递,你可以用单独的形参接收@Param("listSet") Set listSet,

List<Map> queryList(@Param("listSet") Set<String> listSet); 

或者你可以用一个Map来进行接收Map<String, Object> map,

List<Map> queryList(Map<String, Object> condition); 

或者你可以用存在的对象属性来进行接收List queryList(xxxDTO xxxDTO); 

在我们的xml文件中的parameterType也记得设为对应的,对于set的设parameterType="java.util.Set", 

<select id="queryList" resultType="java.util.Map" parameterType="java.util.Set">

 map的设parameterType="java.util.Map", 

<select id="queryList" resultType="java.util.Map" parameterType="java.util.Map">

 对象的话就是parameterType="xxx.对象类名", 

<select id="queryList" parameterType="xxx.对象类名" resultMap="自定义的返回">

 顺带说下要是String的话设parameterType="java.lang.String",然后在下面的里判空set的直接用param的参数名即可,map则取对应的key名,对象则是属性名参加判断; 然后里面是foreach的方法,最后的resultType可以是resultType="java.util.Map",或者自己的里定义的格式 

<if test='xxxs != null and xxxs != ""'>
 and xxxs in 
<foreach collection="xxxs" item="xxx" open="(" close=")" separator=","> 
#{xxx} 
</foreach>
 </if>