카테고리 없음
Java에서 iBatis (MyBatis) 사용 시, List<LinkedHashMap<String, Object>> 특정 컬럼 존재하여 체크 로직
오아름 샘
2025. 5. 21. 13:15
반응형
값 유무가 아닌 컬럼의 존재 유무를 SELECT 절 기준으로 확인하는 것입니다.
Java에서 iBatis (MyBatis) 사용 시, List<LinkedHashMap<String, Object>>로 결과를 받았다면, 일반적으로 각 row의 key는 SQL의 SELECT 절에 포함된 컬럼명이 됩니다. 따라서 이 컬럼이 실제 쿼리 결과에 포함되었는지는 다음과 같이 첫 번째 row의 키 목록을 기준으로 확인하는 방식이 가장 일반적이고 안전합니다
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 출력
}
}
반응형