mybatis数组和集合的长度判断及插入

1、在使用foreach的是collection属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下4种情况: 

    1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .
    2. 如果传入的是单参数且参数类型是非list的Collection的时候,collection属性值为collection .
    3. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
    4. 如果dao层指定了param的name,或者dao层传的是map,collection里为param的name或map的key

  

DefaultSqlSession
private Object wrapCollection(final Object object) {
    if (object instanceof Collection) {
      StrictMap<Object> map = new StrictMap<Object>();
      map.put("collection", object);
      if (object instanceof List) {
        map.put("list", object);
      }
      return map;
    } else if (object != null && object.getClass().isArray()) {
      StrictMap<Object> map = new StrictMap<Object>();
      map.put("array", object);
      return map;
    }
    return object;
  }

 

 

2、判断长度

  集合:<if test="arr != null and arr.size() > 0">

  数组:<if test="col != null and col .length > 0">

posted @ 2018-07-18 11:37  IT新手村  阅读(4595)  评论(0编辑  收藏  举报