Do not support IN statement in a static method.
There are the following ways :
import static org.apache.ibatis.jdbc.SelectBuilder.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class SelectBuilder {
public static void main(String[] args) {
Map<String, Object> parameters = new HashMap<String, Object>();
List<Object> statuses = new ArrayList<Object>();
statuses.add("Y");
statuses.add("N");
parameters.put("statuses", statuses);
String sql = new SelectBuilder().select(parameters);
System.out.println("Execute SQL : \r\n" + sql);
}
public String select(Map<String, Object> parameters) {
BEGIN();
SELECT("SHOP_NO, SHOP_NAME, SHOP_LOCATION, SHOP_STATUS");
FROM("SHOP");
inCondistion("SHOP_STATUS", (Collection) parameters.get("statuses"));
return SQL();
}
public static void inCondistion(String columnName, Collection collections) {
if (collections == null) {
return;
}
StringBuilder inCondition = new StringBuilder("");
if (!collections.isEmpty()) {
inCondition.append(columnName).append(" IN ( ");
Iterator iteratores = collections.iterator();
while (iteratores.hasNext()) {
inCondition.append(String.valueOf(iteratores.next())).append(", ");
}
inCondition.replace(inCondition.length() - 2, inCondition.length(), "");
inCondition.append(" )");
WHERE(inCondition.toString());
} else {
return;
}
}
}
Execute SQL :
SELECT SHOP_NO, SHOP_NAME, SHOP_LOCATION, SHOP_STATUS
FROM SHOP
WHERE (SHOP_STATUS IN ( Y, N ))