mybatis는oracle를 사용하여 데이터를 추가하는 방법
조회
조회 문장은 모두 정상적이지만 주의해야 할 것은oracle 데이터베이스가 조회할 때, 테이블 이름이 별명을 사용할 때, as 키워드를 사용하지 마십시오. mysql 데이터베이스에서만 사용할 수 있습니다.oracle는 필드 이름 별명만 지원하여 as 키워드를 사용할 수 있습니다.
늘다
데이터를 추가할 때, 우리 백그라운드는 추가된 키 id를 사용할 수 있습니다. 이때도 mysql와 다르기 때문에 mybatis는 insert 속성을 설정하면 됩니다. 예를 들어
<insert id="add" keyProperty="receiptId" useGeneratedKeys="true">
그러나 이렇게 하면oracle을 지원하지 않습니다. 왜냐하면oracle은 자체적으로 증가하는 키가 없기 때문에 자신이 정의한 자체적으로 증가하는 서열에 의존하여 키 id에 값을 부여할 수 있습니다.전제 조건은 서열 이름을 알아야 한다는 것이다. 예를 들어 다음과 같다.
<insert id="add">
<selectKey keyProperty="receiptId" resultType="long" order="BEFORE">
select SEQ_Table.nextval from dual
</selectKey>
insert into SA_0511_1IS(id)values(#{receiptId})
</insert>
시퀀스는 다음과 같이 생성됩니다.
create sequence SEQ_Table \\
increment by 1 \\ 1
start with 1 \\ 1
maxvalue 999999999; \\
이렇게 하면 저희가 사용자 정의한 서열을 사용할 수 있습니다.대량 증가 시 키 id에 값을 부여하지 않고 삽입할 수 있습니다. 두 가지 방법이 있습니다.
첫 번째, 테이블에 키 id가 없고 다른 기본 정보와 외부에서 들어오는 관련 id입니다.
<insert id="batchAdd">
insert all
<foreach collection="entities" item="entity" separator=" " open=" " close=" ">
into SA_T(
RECEIPT_ID,GOODS_NAME,
REG_USR_ID,REG_DT,UPDT_USR_ID,UPDT_DT
)values
(#{entity.receiptId},#{entity.goodsName},
#{entity.regUsrId},#{entity.regDt},#{entity.updtUsrId},#{entity.updtDt})
</foreach>
select 1 from dual
</insert>
두 번째: 단일 테이블을 추가할 때 시퀀스 값에 따라 증가해야 한다. 첫 번째 방법은 불가능하다. 예를 들어 다음과 같다.
<insert id="batchAdd">
insert all
<foreach collection="entities" item="entity" separator=" " open=" " close=" ">
into SA_T(
RECEIPT_ID,GOODS_NAME,
REG_USR_ID,REG_DT,UPDT_USR_ID,UPDT_DT
)values
(SEQ_T.nextval,#{entity.goodsName},
#{entity.regUsrId},#{entity.regDt},#{entity.updtUsrId},#{entity.updtDt})
</foreach>
select 1 from dual
</insert>
이렇게 하면 모두 같은 키 id만 나타날 뿐 점차적으로 증가하지 않기 때문에 다음과 같은 방식으로 해야 한다.
<insert id="batchAdd">
insert
into SA_0511_1IS(RECEIPT_ID,DEALER_CODE)
select SEQ_SA_0511_1IS.nextval,t.* from (
<foreach collection="entities" item="entity" separator="union all">
select #{entity.dealerCode} from dual
</foreach>
)
이것은 정상적인 증가이며, 일부 insert into도 있다.select..from 같은 것은 다른 테이블에서 직접 조회한 것입니다. 필드 이름은 반드시 같아야 합니다. 그 필드가 추가되어야 하기 때문에 모두 같아야 합니다.
<insert id="findAndAddByVinNoList">
insert into SA_T_LOG
select * from SA_T
where VIN in
<foreach collection="entities" item="vin" separator="," open="(" close=")" >
#{vin}
</foreach>
</insert>
나머지는 업무 논리이니 본인은 관심을 갖지 않겠습니다.지식은 모두 스스로 공고히 복습해야 한다. 그렇지 않으면 깡그리 잊어버리고 막 접촉했을 때 서열도 잊어버린다.상당한 해 동안 자신도oracle에서 대상을 성명할 수 있었고 약간의 조작도 잊어버렸다mybatis가oracle를 사용하여 데이터를 추가하는 방법에 관한 이 글은 여기에 소개되었습니다. 더 많은 mybatisoracle에 대한 데이터 추가 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.