1. Can we call these methods getWhereClause() and getWhereClauseValues()?
2. For lists and other collections, starting Java 5, it is better to use
for (Column column : whereColumnList) {
  whereClause.append(column.getName()).append(" = ?)
}
3. Rather than do a hasNext check, you can keep track of that using a boolean
boolean isFirst = true;
And inside the loop you can do a
if (!isFirst) {
  whereClause.append(", ")
}
isFirst = false;