# 기존 자료인데 아직 보시는 분들이 있어서 추가 내용 남깁니다.
결론은 test='ttt = "A"' 이런식으로 사용하면 문제없이 처리 됩니다.
알파벳 문자를 ''안에 넣으면 char로 인식하고 ""안에 넣으면 string으로 인식하기 때문
test='' 이렇게 할수 없는 경우에는 아래 방식대로 +'' 로 처리
solution1 : test='키="값"'
solution2 : test="키='값'+''"
- ibatis부터 있던 고질적 버그
1. ${test} <-- parameterType을 String으로 주고 java단에서 파라미터를 String으로 넘겨 줄 경우 에러 발생함.
2. #{test}는 잘됨.
3. int, map, VO등은 또 잘됨.. String만 안됨..
4. mybatis로 넘어왔는데도.. 고쳐지지 않았음.. String이 원래 그렇게 쓰면 안되는 거면.. int는 왜되냥!!
- mybatis 버그
1. map 형식으로 값을 String형식으로 1자리값(A)을 넣어서 보냄..
2. 다이나믹 쿼리에서 test="tttt = 'A'" 식으로 처리함.
3. 처리가 안됨... A를 NumberFormat 으로 변환할수 없다는 Exception만 발생함.
4. String인데 강제로 char나 Integer형으로 파싱하려한다고 생각함.
5. 다이나믹 쿼리에서 test="ttt = 'A' + ''" 식으로 처리함. 잘됨.
6. test="" 표현식 안에 들어갈수 있는 ognl 표현식을 보고 +'' 방식을 찾아냄.. 아래는 표현식 전부
"," ...
"=" ...
"?" ...
"||" ...
"or" ...
"&&" ...
"and" ...
"|" ...
"bor" ...
"^" ...
"xor" ...
"&" ...
"band" ...
"==" ...
"eq" ...
"!=" ...
"neq" ...
"<" ...
"lt" ...
">" ...
"gt" ...
"<=" ...
"lte" ...
">=" ...
"gte" ...
"in" ...
"not" ...
"<<" ...
"shl" ...
">>" ...
"shr" ...
">>>" ...
"ushr" ...
"+" ...
"-" ...
"*" ...
"/" ...
"%" ...
"instanceof" ...
"." ...
"(" ...
"[" ... <-- [] 는 배열이나 하위 속성의 값을 불러올때 쓰이는듯.. ['t']
- mybatis 에 mysql 연동시 버그 (원인은 밝히지 못했음..)
1. 가끔 컬럼들을 대문자, 소문자 중복해서 가져오는 경향이 있음.. (t1,t2,t3,T1,T2,T3 식..)
2. 가끔 컬럼들을 대문자, 소문자 섞어서 가져오는 경향이 있음.. (t1,T2, t3 식..)
- view 를 이용해서 여러 테이블을 조인했을때 이경우가 발생했음..
- jakarta project에서 Map을 확장해서 만든 라이브러리가 있는데 이것을 사용시 소문자로 일괄변경됨.
- ibatis때에도 비슷한 문제 때문에 ibatis에서 put 하는 부분을 디코딩해서 따로 소스에 포함시켜서 처리한적이 있음.
3. 가끔 컬럼의 매핑을 엉뚱하게 하는 경향이 있음..
- column t1 이 L1010 이었는데 이것을 String으로 가져오지 못함.
- mysql 쿼리에서 convert(t1 as char) 로 변환하니 String으로 제대로 처리됨.
현재 구글에서 mybatis 에 대한 이슈가 많이 올라오고 있어서 뜯어 고치느라 분주하다고 들었음..
버젼업이 되면 안정적이 될것이라 생각함.
아직은 불안한 점이 많아 보임..
'Jsp-Servlet > IBatis' 카테고리의 다른 글
ibatis key값 대소문자에 대한 처리 (2) | 2011.05.13 |
---|---|
ibatis에서 jdbc를 불러와 metadata 출력 (4) | 2011.02.18 |
IBatisDao.java, SqlMapClientFactory.java (3) | 2010.04.07 |
ibatis 동적sql 레퍼런스 (1) | 2010.04.06 |