2011. 3. 15. 11:43
반응형
# 기존 자료인데 아직 보시는 분들이 있어서 추가 내용 남깁니다.
결론은 test='ttt = "A"' 이런식으로 사용하면 문제없이 처리 됩니다.
알파벳 문자를 ''안에 넣으면 char로 인식하고 ""안에 넣으면 string으로 인식하기 때문
test='' 이렇게 할수 없는 경우에는 아래 방식대로 +'' 로 처리
solution1 : test='키="값"'
solution2 : test="키='값'+''"



 테스트 버젼 : mybatis-3.0.4.jar

- 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 에 대한 이슈가 많이 올라오고 있어서 뜯어 고치느라 분주하다고 들었음..
버젼업이 되면 안정적이 될것이라 생각함.
아직은 불안한 점이 많아 보임..


반응형
Posted by seongsland