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。
推薦閱讀:
- Mybatis如何通過出入Map參數作為條件進行查詢
- mybatis in查詢條件過長的解決方案
- MyBatis中foreach標簽的collection屬性的取值方式
- Mybatis中xml的動態sql實現示例
- Mybatis如何使用ognl表達式實現動態sql