반응형
oracle insert 후 key값 반환
- mabatis에 selectKey라고 하는 db insert 후 리턴 받는 기능입니다.
구글에 검색 키워드
아래처럼 엄청나게 많이 나오네요
- mybatis 키 값 리턴
- Mybatis insert 후 값 가져오기
- MyBatis insert 후 PK 값 가져오기
- oracle insert 후 key값 반환
- Mybatis insert 리턴 값
- mybatis insert return pk
- mybatis insert return key
selectKey 요소의 주요 속성
- keyProperty: 생성된 키 값을 설정할 객체의 속성을 지정합니다. 여러 개의 속성을 지정할 수 있습니다.
- keyColumn: 데이터베이스의 column 이름을 지정합니다.
- resultType: 생성된 키 값의 데이터 타입을 지정합니다. 예를 들어, int, long, String 등.
- order: 키 값을 생성하는 시점을 지정합니다. BEFORE는 삽입 전에, AFTER는 삽입 후에 키 값을 생성합니다.
문자열 키 리턴
BEFORE
--테이블
CREATE TABLE "SAMPLE" (
"ID" VARCHAR2(16 BYTE) NOT NULL ENABLE,
"NAME" VARCHAR2(50 BYTE),
"DESCRIPTION" VARCHAR2(100 BYTE),
"USE_YN" CHAR(1 BYTE),
"REG_USER" VARCHAR2(10 BYTE),
PRIMARY KEY ("ID")
)
<insert id="insertSample" parameterType="SampleVO">
<selectKey keyProperty="id" resultType="string" order="BEFORE">
<![CDATA[
SELECT 'SAMPLE-' || LPAD(NVL(MAX(TO_NUMBER(SUBSTR(id, 8))), 0) + 1, 5, '0') AS id
FROM SAMPLE
]]>
</selectKey>
INSERT INTO SAMPLE
( ID
, NAME
, DESCRIPTION
, USE_YN
, REG_USER )
VALUES ( #{id}
, #{name}
, #{description}
, #{useYn}
, #{regUser} )
</insert>
int 형 키 리턴
BEFORE
--테이블
CREATE TABLE "SAMPLE2" (
"ID2" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(50 BYTE),
"DESCRIPTION" VARCHAR2(100 BYTE),
"USE_YN" CHAR(1 BYTE),
"REG_USER" VARCHAR2(10 BYTE),
PRIMARY KEY ("ID2")
)
<insert id="insertSample2" parameterType="SampleVO">
<selectKey keyProperty="id2" resultType="int" order="BEFORE">
select nvl(max(id2),0)+1 as id from SAMPLE2
</selectKey>
insert into SAMPLE2 (id2, NAME
, DESCRIPTION
, USE_YN
, REG_USER )
values (#{id2}
, #{name}
, #{description}
, #{useYn}
, #{regUser} )
</insert>
int 형 키 리턴
AFTER ORACLE
-- sample_seq 시퀀스
<insert id="insertSample" parameterType="map" useGeneratedKeys="true" keyProperty="id2">
INSERT INTO SAMPLE2 (id2, name, value)
VALUES (sample_seq.NEXTVAL, #{name}, #{value})
<selectKey keyProperty="id2" resultType="int" order="AFTER">
SELECT sample_seq.CURRVAL FROM dual
</selectKey>
</insert>
AFTER 문자열 리턴 및 다른 DB들은 다음에 하겠습니다.
반응형
'dev > java(egov)' 카테고리의 다른 글
[Java] java enum key value (0) | 2024.08.22 |
---|---|
java rsa 암호화, 복호화 (0) | 2024.07.01 |
[mybatis] Could not set property 'id' of 'class egovframework.example.sample.service.SampleVO' with value '1' (0) | 2024.05.26 |
[mybatis] Element type "selectkey" must be declared (0) | 2024.05.26 |
intellij 전자정부프레임워크 spring boot 설정 (0) | 2024.05.01 |