MyBatis의 조건 지점(등)에서 문자열 소양을 활용할 때 주의사항
반하는 현상은?
패라메트릭 객체의 속성 값(String형)에 따라 어셈블된 SQL을 변경하려면 MyBatis에서 제공하는 <if>
레이블을 사용하여 다음과 같은 조건부로 분할합니다.
매개 변수 대상public class MyParam {
private String status;
// ...
}
맵 XML(조각)<if test="status == '0'">
...
</if>
개발자로서의 생각...status
의 값은 "0"
인 상황에서 특정한 조건을 더하고 싶은데...실제로 이 조건은 true
으로 바뀌지 않았다.
왜?
마이바티스test
는 속성으로 지정된 값을 GNL식로 평가하지만, GNL식'0'
에서는 행String
으로 처리하는 것이 아니라 유형이 다른 값의 비교가 항상Character
처럼 끝난다.
신경쓰이는 건... 이 동작이 규격인가요?이런 부분.
MyBatis가 사용하는 것을 보십시오OGAL 라이브러리의 언어 참조
public class MyParam {
private String status;
// ...
}
<if test="status == '0'">
...
</if>
마이바티스
test
는 속성으로 지정된 값을 GNL식로 평가하지만, GNL식'0'
에서는 행String
으로 처리하는 것이 아니라 유형이 다른 값의 비교가 항상Character
처럼 끝난다.신경쓰이는 건... 이 동작이 규격인가요?이런 부분.
MyBatis가 사용하는 것을 보십시오OGAL 라이브러리의 언어 참조
false
-> '0'
Character
-> '00'
String
-> "0"
String
->"00"
(당연...)그럼 큰 따옴표로 묶을까요?→
맵 XML(조각)<if test="status == "0"">
...
</if>
아시다시피... (물론 그렇죠...) 상술한 기록은 XML로 성립될 수 없습니다.그러나'이따옴표로 묶는다'는 방법은 옳다.
XML 속성의 괄호를 바꾸면 좋지 않습니까?→
여러 가지 해결 방법이 있는데... 직관적인 것 같은데... XML 속성의 괄자를 "String
"에서 ""
"로 바꾸고 '
속성의 값에 "test
"을 사용합니다.
맵 XML(조각)<if test='status == "0"'>
...
</if>
다른 해결 방법은?
물론 다른 해결 방법도 있다.
상수적 이용
문자열 소양을 직접 지정하지 않고 상량화하여 OGAL식에서 참조할 수 있다.
사실... 어쩌면 이런 방법이 있어야 하는 자세일지도 몰라요.
상수류package com.example.domain;
public class Status {
public static final String STOP = "0";
// ...
}
맵 XML(조각)<if test="status == @com.example.domain.Status@STOP">
...
</if>
솔리드 참조 활용
문자열 소양의 괄문자를 ""
"의 실체 참조 ""
"로 설정하면 OGLL식 방면을 ""
"로 식별할 수 있다.그러나 보시다시피...가독성은 상당히 낮다.
맵 XML(조각)<if test="status == "0"">
...
</if>
토스린의 이용
GNL식은 방법을 호출할 수 있기 때문에 호출"0"
을 Character#toString()
로 변환할 수 있다.음... 움직였지만 왠지 진 느낌이 여간 아니었어
맵 XML(조각)<if test="status == '0'.toString()">
...
</if>
총결산
상수 설계를 제대로 할 수 있다면 상수를 활용하는 게 좋을 것 같은데...이번에는'문자열 능력을 활용한다는 전제'로 신청서를 쓰게 되는데...'XML 속성의 괄자를'Stirng
로 바꾸는 방법을 추천한다.
그나저나 푹 빠진 엔지니어가 온라인에서'토스트링 사용'해법을 찾아 수정안을 제시했다
Reference
이 문제에 관하여(MyBatis의 조건 지점(등)에서 문자열 소양을 활용할 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki43zoo/items/dbdaad338f2f1ae5b256
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<if test="status == "0"">
...
</if>
여러 가지 해결 방법이 있는데... 직관적인 것 같은데... XML 속성의 괄자를 "
String
"에서 ""
"로 바꾸고 '
속성의 값에 "test
"을 사용합니다.맵 XML(조각)
<if test='status == "0"'>
...
</if>
다른 해결 방법은?
물론 다른 해결 방법도 있다.
상수적 이용
문자열 소양을 직접 지정하지 않고 상량화하여 OGAL식에서 참조할 수 있다.
사실... 어쩌면 이런 방법이 있어야 하는 자세일지도 몰라요.
상수류package com.example.domain;
public class Status {
public static final String STOP = "0";
// ...
}
맵 XML(조각)<if test="status == @com.example.domain.Status@STOP">
...
</if>
솔리드 참조 활용
문자열 소양의 괄문자를 ""
"의 실체 참조 ""
"로 설정하면 OGLL식 방면을 ""
"로 식별할 수 있다.그러나 보시다시피...가독성은 상당히 낮다.
맵 XML(조각)<if test="status == "0"">
...
</if>
토스린의 이용
GNL식은 방법을 호출할 수 있기 때문에 호출"0"
을 Character#toString()
로 변환할 수 있다.음... 움직였지만 왠지 진 느낌이 여간 아니었어
맵 XML(조각)<if test="status == '0'.toString()">
...
</if>
총결산
상수 설계를 제대로 할 수 있다면 상수를 활용하는 게 좋을 것 같은데...이번에는'문자열 능력을 활용한다는 전제'로 신청서를 쓰게 되는데...'XML 속성의 괄자를'Stirng
로 바꾸는 방법을 추천한다.
그나저나 푹 빠진 엔지니어가 온라인에서'토스트링 사용'해법을 찾아 수정안을 제시했다
Reference
이 문제에 관하여(MyBatis의 조건 지점(등)에서 문자열 소양을 활용할 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki43zoo/items/dbdaad338f2f1ae5b256
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package com.example.domain;
public class Status {
public static final String STOP = "0";
// ...
}
<if test="status == @com.example.domain.Status@STOP">
...
</if>
<if test="status == "0"">
...
</if>
<if test="status == '0'.toString()">
...
</if>
상수 설계를 제대로 할 수 있다면 상수를 활용하는 게 좋을 것 같은데...이번에는'문자열 능력을 활용한다는 전제'로 신청서를 쓰게 되는데...'XML 속성의 괄자를'
Stirng
로 바꾸는 방법을 추천한다.그나저나 푹 빠진 엔지니어가 온라인에서'토스트링 사용'해법을 찾아 수정안을 제시했다
Reference
이 문제에 관하여(MyBatis의 조건 지점(등)에서 문자열 소양을 활용할 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki43zoo/items/dbdaad338f2f1ae5b256텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)