mybatis數組和集合的長度判斷及插入方式

mybatis數組和集合的長度判斷及插入

1、在使用foreach的是collection屬性

該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的

主要有一下4種情況: 

  • 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list .
  • 如果傳入的是單參數且參數類型是非list的Collection的時候,collection屬性值為collection .
  • 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
  • 如果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">

mybatis數組與集合判斷非空和長度

數組判斷

參數object為數組Object[]時。先判斷是否為null,不為null則判斷數組長度object.length是否大於0即可。

    <if test="object!=null and object.length>0">
        <yourSql>
    </if>

集合判斷

參數object為集合List<Object>時,先判斷是否為null,不為null則判斷集合長度object.size()是否大於0即可。

    <if test="object!=null and object.size()>0">
        <yourSql>
    </if>

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: