오늘 나는 자신을 속이고 많은 시간을 낭비한 일을했습니다. . .
Mybatis의 설정에서 나는 이와 같은 설정 줄을 보았다. 프로그래머의 호기심에서 나는이 설정이 무엇을하는지 검색하고 찾았습니다.
<설정 이름 = "CallSetterSonnulls"value = "true"/>
인터넷에서 많은 위대한 마스터들의 답변을 마친 후에는 마침내 이해가 거의 없었습니다.
일반적으로 쿼리를 사용하여 쿼리 결과를 수락하면 쿼리 결과 NULL이있는 필드가 자동으로 무시되므로 매개 변수를 복용 할 때 NULL 포인터 예외 가보고됩니다.
이 속성이 설정되면 Mybatis는 이러한 필드를 무시하지 않습니다. 이 키를 여전히 얻을 수 있지만 값은 Null이므로 편리합니다.
그래서 여기 함정이 온다. 이 설정에는 두 가지 더 특별한 상황이 있습니다.
1. 전체 쿼리의 모든 필드에 값이 없으면, 즉 0 레코드가 발견되면 허용 된 맵의 결과는 무엇입니까?
답은 NULL이있는 맵 대신 모든 키 값 NULL이있는 맵을 받게된다는 것입니다.
2. 한 필드 만 쿼리하고지도로 수신한다면 현재 NULL의 결과는 무엇입니까?
대답은 우리가 NULL이있는지도를 받게 될 것이라는 점입니다. 이것은 위의 반대입니다.
요약
위는 MyBatis CallSetterSonnulls의 구성 분석입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨주세요. 편집자는 제 시간에 당신에게 답장 할 것입니다!