package org.apache.ibatis.submitted.sqlprovider; import java.util.List; import java.util.Map; public class OurSqlBuilder { public String buildGetUsersQuery(Map<String, Object> parameter) { // MyBatis wraps a single List parameter in a Map with the key="list", // so need to pull it out @SuppressWarnings("unchecked") List<Integer> ids = (List<Integer>) parameter.get("list"); StringBuilder sb = new StringBuilder(); sb.append("select * from users where id in ("); for (int i = 0; i < ids.size(); i++) { if (i > 0) { sb.append(","); } sb.append("#{list["); sb.append(i); sb.append("]}"); } sb.append(") order by id"); return sb.toString(); } public String buildGetUserQuery(Integer parameter) { // parameter is not a single List or Array, // so it is passed as is from the mapper return "select * from users where id = #{value}"; } }