my batis case when 오류 해결

2020 단어 mybatiscasewhen
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 에서===사용 할 수 없습니다=,그렇지 않 으 면 잘못 보고 합 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기