首先mapper语句的话存在以下情况
1、单个参数,那么直接使用mybatis语法即可。
2、多个参数:
2.1 多个参数的情况下,如果类型相同的话,比如都是String类型,可以直接使用mybaits的parameterType=“String”
2.1 多个参数,但是类型不相同,比如void add(Integer factoryStatus,List<Long> ids)这种情况的话参数可以用Map进行封装。
Map封装的代码:
public int updateFactoryStatus(List<Long> ids, Integer factoryStatus) { Map<String, Object> map = new HashMap<>(16); map.put("FactoryStatus", factoryStatus); map.put("Ids", ids);
Mapper的代码:
int updateFactoryStatus(Map<String, Object> map);
mybatis.xml里面的语句假设为更新语句的时候:
<update id="updateFactoryStatus" parameterType="map"> update pms_brand pb set pb.name=#{Name} where pb.id in <foreach collection="Ids" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </update>
***** 注意,这里 x=#{y} x是数据库中的列名,y的话是map的key
然后假设参数中有List格式的话,foreach的时候collection的话也是map的key,
foreach里面的元素重点说下item,表示集合中元素迭代时的别名,像上面,因为ids是List<Long>类型的,那么直接使用item的别名即可#{item};而如果ids是个pojo的话,比如是List<Brand> brandList,
那么里面可以传入具体的元素值,#{item.id}诸如这样的情况。