Java에서 iBatis (MyBatis) 사용 시, List<LinkedHashMap<String, Object>> 컬럼 존재 여부 체크
public class ResultColumnChecker {
/**
* 조회 결과에서 resultFlag와 resultMessage 컬럼이 SELECT 절에 포함되어 있는지 확인합니다.
*
* @param resultList iBatis 조회 결과 (List<LinkedHashMap<String, Object>>)
* @return true: 두 컬럼 모두 존재, false: 둘 중 하나라도 없음
*/
public static boolean checkColumnsInSelect(List<LinkedHashMap<String, Object>> resultList) {
if (resultList == null || resultList.isEmpty()) {
return false;
}
// 첫 번째 row 기준으로 컬럼 존재 여부 판단
LinkedHashMap<String, Object> firstRow = resultList.get(0);
Set<String> columnNames = firstRow.keySet();
return columnNames.contains("resultFlag") && columnNames.contains("resultMessage");
}
// 사용 예시
public static void main(String[] args) {
List<LinkedHashMap<String, Object>> resultList = new ArrayList<>();
LinkedHashMap<String, Object> row = new LinkedHashMap<>();
row.put("id", 1);
row.put("resultFlag", null); // 값은 null이어도 컬럼이 존재하므로 OK
row.put("resultMessage", ""); // 빈 문자열도 OK
resultList.add(row);
boolean hasColumns = checkColumnsInSelect(resultList);
System.out.println("SELECT 절에 컬럼 존재 여부: " + hasColumns); // true 출력
}
}