mapper接口参数为map的情况

首先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}诸如这样的情况。

mapper接口参数为map的情况

上一篇:Appium driver常用API


下一篇:Android的注解(Annotation)学习之路