MyBatis 가 Oracle 에 데 이 터 를 삽입 하고 메 인 키 를 되 돌려 주 는 문제 해결
2192 단어 데이터 뱅 크
환경: MyBatis 3.2, Oracle, Spring 3.2
SQL Snippet in XML Configuration:
SELECT U_USER_INFO_SEQ.Nextval as ID from DUAL
insert into U_USER_INFO
ID,
USER_NAME,
REAL_NAME,
.....
요점 은 새로 생 성 된 Primary Key 를 되 돌려 주 는 selectKey 를 사용 한 것 입 니 다. 이 상황 은 Oracle 에 만 적 용 됩 니 다.
주의해 야 할 점 은 자바 코드 에서 Integer 형식 을 사용 하 는 것 입 니 다. 그러나 MyBatis 의 맵 파일 에 서 는 자바. math. BigDecimal 형식 을 사용 합 니 다. 그렇지 않 으 면 형식 변환 이나 일치 하지 않 는 오 류 를 보고 할 수 있 습 니 다.
다른 예 를 들 어 MySQL 이나 SQLServer 의 경우 다음 과 같은 상황 에 적 용 됩 니 다.
insert into spares(spares_id,spares_name,
spares_type_id,spares_spec)
values(#{id},#{name},#{typeId},#{spec})
useGenerated Keys / KeyProperty 를 사용 하여 데 이 터 를 삽입 할 때 새 생 성 메 인 키 의 반환 을 완성 합 니 다.그 중 이상 정보의 해결:
이상 정보:
org. springframework. jdbc. UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: java. sql. QLexception: 잘못된 열 형식: getBigDecimal not implemented for class oracle. jdbc. driver. T4CrowidAccessor;uncategorized SQLException for SQL []; SQL state [99999]; error code [17004]; 잘못된 열 형식: getBigDecimal not implemented for class oracle. jdbc. driver. T4CrowidAccessor;nested exception is java. sql. QLexception: 잘못된 열 형식: getBigDecimal not implemented for class oracle. jdbc. driver. T4CrowidAccessor
문제 해결:
문 제 는 자바 코드 에 되 돌아 오 는 메 인 키 데이터 형식 을 설정 하 는 것 입 니 다. 그 중에서 되 돌아 오 는 데이터 형식 은 BigDecimal 과 Long 이 아 닌 java. lang. Integer 입 니 다. 하지만 MyBatis 에 있 는 맵 파일 의 형식 은 자바. math. BigDecimal 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx websocket ip_해시 규칙프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다. 프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다. spring.profiles.active=de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.