my batis case when 오류 해결
Failed to process, please exclude the tableName or statementId.
이런 잘못된 정 보 는 잘못된 정 보 를 보고 하 는 것 은 문법 오류 이다.
하지만 my sql 명령 행 에서 sql 문 구 를 실행 하 는 것 은 문제 가 없습니다.
// case when
WHERE dept.type = 1
AND
(
CASE agent.dept_type
WHEN "agent" THEN dept.id=30
END
)
// agent dept_type "agent" , dept.id = 30
이 sql 문 구 는 명령 행 에서 실행 하 는 데 문제 가 없 지만 my batis 에서 실행 하면 오류 가 발생 합 니 다.
//
WHERE dept.type = 1
AND dept.id=
(
CASE agent.dept_type
WHEN "agent" THEN 30
END
)
나중에 dept.id 를 밖으로 내 보 내 서 이 문 제 를 해결 했다.20190718-보충 기록:다른 문제 에 부 딪 혔 습 니 다.만약 에 dept 라 는 표 가 연 결 된 것 이 라면 데이터 가 없 을 수도 있 습 니 다.dept 에 데이터 가 없 을 때 우 리 는 dept.id 에 어떤 인 자 를 부여 할 수 없고 원래 표 데이터 의 조회 에 영향 을 줄 수 없습니다.저 는 다음 과 같이 바 꾸 었 습 니 다.
//
WHERE dept.type = 1
AND (dept.id=
(
CASE agent.dept_type
WHEN "agent" THEN 30
ELSE 0
END
) or dept.id is null)
dept.id 를 빈 판단 으로 추가 하면 됩 니 다.(my sql 구문 에 서 는 해결 방법 이 많 지만 my batis 에 서 는 잘못 보고 합 니 다- |)
2019-7-30-보충 설명:
빈 문자열 이 라면"작은 따옴표"를 사용 할 수 없습니다.
CASE WHEN *** THEN ***
ELSE "" => , => ELSE''
테스트 주의사항
<choose>
<when test="groupBy!=null and groupBy==1">
p_id areaId,
</when>
<when test="groupBy!=null and groupBy==2">
c_id areaId,
</when>
<when test="groupBy!=null and groupBy==3">
r_id areaId,
</when>
</choose>
test 에서===사용 할 수 없습니다=,그렇지 않 으 면 잘못 보고 합 니 다.이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.