mybatis는oracle를 사용하여 데이터를 추가하는 방법

이번 블로거는 주로oralce 데이터베이스 개발을 진행하는데 오랫동안oracle를 사용하지 않아서 많은 지식도 잊어버린 것이 많지 않다. 이번에는 주로 업무에서 주로 사용하는 sql문장 작성을 복습한다.

조회


조회 문장은 모두 정상적이지만 주의해야 할 것은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에 대한 데이터 추가 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기