一起养成写作习惯!这是我参与「掘金日新计划 · 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>