반응형 [개발] Programming/Database27 iBATIS, CDATA를 적는 목적 xml 문서내 쿼리안에 , & 등의 특수문자가 포함 될 경우 에러를 방지하기 위해 를 추가해준다. SELECT * FROM DUAL WHERE A C ]]> CDATA를 사용하지 않고 iBatis에서 사용하려면, 다음과 같이 처리하면 된다. SELECT * FROM DUAL WHERE A > B AND B < C 또한 내에서 다이나믹 쿼리는 쓰지 못한다. 2018. 11. 7. iBatis 오라클 NUMBER 타입, java.math.BigDecimal cannot be cast to java.lang.String 에러 해결 방법 오라클 쿼리 리턴 데이터 타입이 NUMBER 인 경우 컨트롤러 단 HashMap에서 get 할 때 'java.math.BigDecimal cannot be cast to java.lang.String' 오류 발생 * myNumber 데이터 타입은 NUMBER String pNum = numMap.get("myNumber")); > java.math.BigDecimal cannot be cast to java.lang.String NUMBER 타입을 string 변수에 담으려다 발생한 오류이다. * 아래와 같이 변환해주면 호출이 가능함. String pNum = String.valueOf(numMap.get("myNumber")); 2018. 11. 6. MyBatis, 쿼리 파라미터 # 와 $ 의 차이점 마이바티스에서 #, $의 차이는 옵티마이저 동작의 여부이다. select * from testTable where id = #{testId} select * from testTable where id = ${testId} $의 경우 #와는 달리 SQL 인젝션 공격에 취약한 단점이 있지만, 장점은 옵티마이져가 실행되기 때문에 적절한 플랜으로 쿼리가 돌아간다. 예를 들어, EMPLOYEE 테이블에 POSITION 이라는 컬럼에 아래와 같은 데이터가 있다고 가정하자. 사원 900명 대리 500명 로얄패밀리 10명 경영진 2명 테이블에서 '사원'이나 '대리'를 자주 추출할 때에는 Full Scan이 유리하고 상대적으로 적은 '로얄패밀리'나 '경영진'을 추출할 때에는 Index 스캔이 유리하다. 이때 '$'를 사.. 2018. 11. 5. 이전 1 2 3 4 5 다음 728x90