From afda15a299956aab7f4eb01d8000af5decffab16 Mon Sep 17 00:00:00 2001 From: Shaun Chyxion Date: Sun, 18 Mar 2018 12:27:01 +0800 Subject: [PATCH] add in primitive --- .../java/me/chyxion/tigon/mybatis/Search.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tigon-model/src/main/java/me/chyxion/tigon/mybatis/Search.java b/tigon-model/src/main/java/me/chyxion/tigon/mybatis/Search.java index 2a4bf0c..62160ff 100644 --- a/tigon-model/src/main/java/me/chyxion/tigon/mybatis/Search.java +++ b/tigon-model/src/main/java/me/chyxion/tigon/mybatis/Search.java @@ -2,6 +2,7 @@ package me.chyxion.tigon.mybatis; import java.util.*; import java.io.Serializable; +import java.lang.reflect.Array; import org.springframework.util.Assert; import me.chyxion.tigon.model.BaseModel; import org.apache.commons.lang3.StringUtils; @@ -137,7 +138,8 @@ public class Search implements Serializable { in(col, (Collection) value); } else if (value.getClass().isArray()) { - in(col, (Object[]) value); + // may primitive, (Object[]) causes exception + in(col, toList(value)); } else { criteria.add(new Criterion(CriterionType.EQ, col, value)); @@ -172,7 +174,9 @@ public class Search implements Serializable { * @return this */ public Search in(String col, Collection values) { - criteria.add(new Criterion(CriterionType.IN, col, values)); + if (values != null && !values.isEmpty()) { + criteria.add(new Criterion(CriterionType.IN, col, values)); + } return this; } @@ -521,4 +525,13 @@ public class Search implements Serializable { } return result; } + + List toList(Object source) { + final int length = Array.getLength(source); + final List list = new ArrayList<>(length); + for (int i = 0; i < length; ++i) { + list.add(Array.get(source, i)); + } + return list; + } }