MyBatis를 지속성 계층으로 사용하면 삽입 문은 기본값이 레코드의 주요 값을 반환하지 않지만 삽입 된 레코드의 수를 반환합니다. 비즈니스 계층이 레코드의 기본 키를 얻어야하는 경우이 기능은 구성을 통해 완료 될 수 있습니다.
시퀀스 기본 키의 경우 삽입 SQL을 실행하기 전에 Oracle 및 DB2와 같이 레코드를 삽입 할 기본 키 값을 지정해야합니다. 다음 구성 방법을 사용할 수 있습니다.
<insert id = "add"parametertype = "vo.category"> <selectkey resulttype = "java.lang.short"order = "keyproperty ="id "> dual에서 seq_test.nextval </selectkey> 범주에 삽입 (name_zh, parent_id, show_der, delete_status) (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>자체 확보 기본 키가있는 테이블의 경우 삽입 할 때 기본 키가 필요하지 않지만 삽입 프로세스 중에 자체 증가 기본 키가 자동으로 얻어집니다. 예를 들어, MySQL, 다음 두 가지 구성 방법을 채택 할 수 있습니다.
<insert id = "add"parametertype = "vo.category"usegeneratekeys = "true"keyproperty = "id"> 범주에 삽입 (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>또는
<insert id = "add"parametertype = "vo.category"> <selectkey resulttype = "java.lang.short"order = "after"keyproperty = "id"> select last_insert_id () as id </selectkey> 범주에 삽입 (name_zh, parent_id, show_sord, delete_status, delete_status, delete_status) 값 (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>삽입 작업이 완료되면 매개 변수 범주의 ID 속성이 할당되었습니다.
데이터베이스 테이블의 기본 키가 자체 증가 유형이 아닌 경우, 응용 프로그램 계층은 기본 키를 생성해야합니다 ..... 나는 이것에 대해 많이 말하지 않을 것입니다. 필요한 친구들은 의사 소통을 위해 메시지를 남길 수 있습니다 ..
다음은 Oracle의 작문 방법입니다. Oracle에는 자동화가 없지만 트리거와 함께 구현 된 Curval은 트리거에 정의됩니다.
<insert id = "insert"parameterclass = "profeekindobject"> <! keyProperty = "KindId"> SEQ_T_PRO_FEEKIND_ID.CURRVAL을 듀얼에서 KindID로 선택하십시오 </selectKey> </insert> <!-다음은 mySQL에 대한 쓰기 메소드-> <!-<selectKey resultClass = "int"keyProperty = "id"> end </selectkey>->->->->->->
기타 참조 코드 :
Entity Object (예 : 객체 저장)를 지속 할 때 SelectKey를 사용하지 않으면 엔티티 객체의 ID 속성, 즉 데이터 테이블 기본 키의 ID 속성을 즉시 가져 오지 않습니다.
자바 코드
권한 권한 = 새 허가 (); repmission.set ... permisondao.createpermission (허가); AssertNull (허가); 권한 권한 = 새 허가 (); repmission.set ... permisondao.createpermission (허가); AssertNull (허가);
SelectKey 요소는 부모 요소의 위치와 관련이 있습니다.
<insert id = "addpermission"parameterclass = "resment"> <selectKey resultClass = "int"keyProperty = "hepmissionId"> seq_p_permission.nextVal </selectKey> p_permission (permissionId, ebsismentInfo, permissionName, permissionEnmame, url) 값 ( #, #, #, # #, # #, # # # # # # # # # # # #, # # # # # # # # # # # # #permissionEnmame #, #url #) </insert> <insert id = "addpermission"parameterclass = "helpsisment"> <selectkey resultClass = "int"keyProperty = "permissionId"> dual </selectkey에서 seq_p_permission.nextVal select </selectkey> p_permission (permission, permissionname, permissionname, permissionname, permissionname, permissionname, permissionName). (#permissionId#,#permissionInfo#,#permissionName#,#permissionEndame#,#url#) </insert>
MySQL과 SqlServer가 뒤에 있습니다
XML 코드
<insert id = "addpermission"parameterclass = "resment"> p_permission (harmissionId, hermissionInfo, hermissionName, urmissionName, urlmissionName, urmissionEname, #permissionInfo #, #permissionName #, #perSmissionEndame #, #url #) <selectKey resultClass = "keyProperTy ="keyProperTy = "keyProperTy ="keyProperTy = "keyProperTy = </selectkey> </insert> <insert id = "addpermission"parameterClass = "resment"> p_permission (hermissionId, permissionInfo, hermissionName, permissionEnmame, url) 값 (#permissionId#,#permissionInfo#,#permissionName#,#permissionEndame#, #URL#)에 삽입 last_insert_id () </selectkey> </insert>를 선택하십시오
위와 같이 쓰여진 것은 SelectKey의 위치와 너무 밀접한 관련이 있습니다. iBatis의 SQLMAP 구성 파일의 selectKey 요소에는 유형 속성이 있으며,이 속성은 사전 또는 게시물이 생성 전후 생성을 나타내는 지 여부를 지정할 수 있습니다.
Oracle의 경우입니다
XML 코드
<insert id = "addpermission"parameterclass = "resment"> <selectKey resultClass = "int"keyProperty = "premissionId"type = "pre"> dual에서 seq_p_permission.nextVal> p_permission (permissionId, permissionInfo, permissionName, permissionEname, urmissionID) 값 #, # #permissionName #, #permissionEnmame #, #url #) </insert> <insert id = "addpermission"parameterClass = "heatsisment"> <selectKey resultClass = "int"keyProperty = "repmissionId"type = "pre"> dual에서 seq_p_permission.nextVal </selectkey> permission (permission) AprimissionEnmame, url) 값 (#permissionId#,#permissionInfo#,#permissionName#,#permissionenname#,#url#) </insert>
mysql, sqlserver 등은 다음과 같이 표현됩니다.
XML 코드
<insert id = "addpermission"parameterclass = "resment"> <selectKey resultClass = "int"keyProperty = "hepmissionId"type = "post"> select last_insert_id () </selectkey> p_permission (permissionId, permissionName, permissionenname, url) value에 삽입합니다 ( #, #, #, #, #, #, #, #, #, #, # #, #permissionenname #, #url #) </insert>
위는 Mybatis의 Mybatis에서 편집자가 소개 한 기본 키를 반환하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!