Bei Verwendung von MyBatis als Persistenzschicht wird die Anweisung standardmäßig den Primärschlüsselwert des Datensatzes zurückgeben, sondern die Anzahl der eingefügten Datensätze zurückgibt. Wenn die Geschäftsschicht den Primärschlüssel des Datensatzes erhalten muss, kann diese Funktion durch Konfiguration ausgeführt werden.
Für die Sequenz -Primärschlüssel muss vor dem Ausführen von SQL SQL ein Primärschlüsselwert angegeben werden, damit der zu fixierte Datensatz wie Oracle und DB2 eingefügt werden soll. Die folgende Konfigurationsmethode kann verwendet werden:
<einfügen id = "add" parameterType = "vo.category"> <selectKey resultType = "java.lang.short" order = "vor" vor "keyProperty =" id "> SEQ_TEST.NEXTVAL VON DUAL </SELECTKEY> In Category einfügen (name_zh, parent_id, show_order, delete_status, Beschreibung) Werte (name_zh, parent_id, show_order, delete_status, Beschreibung) Werte (name_zh, parent_id, show_order, delete_status, Beschreibung) Werte (name_zh, parent_id, show_order, delete_status, Beschreibung). (#{namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showOrder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{Beschreibung, JdbcType = varchar}}) </bit}, JdbcType = varchar}}) </bit}Für Tabellen mit selbststörenden Primärschlüssel wird beim Einfügen kein Primärschlüssel benötigt, aber während des Einfügungsprozesses wird automatisch ein selbstverletzter Primärschlüssel erhalten. Beispielsweise können die folgenden zwei Konfigurationsmethoden angewendet werden:
<einfügen id = "add" parameterType = "vo.category" useGeneratedkeys = "true" keyProperty = "id"> in die Kategorie einfügen (name_zh, parent_id, show_order, delete_status, Beschreibung) Werte Werte Werte Werte Werte. (#{Namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showOrder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{Beschreibung, JdbcType = varchar}}) </bit}, JdbcType = varchar}}) </bit}oder
<einfügen id = "add" parameterType = "vo.category"> <selectKey resultType = "java.lang.short" order = "nach" keyProperty = "id"> select last_insert_id () als id </selectKey> in die Kategorie einfügen (name_zh, parent_id, delete_status, Beschreibung) Werte (name_zh, parent_id_stat, delete_status, Beschreibung) Werte (name_zh, teufl (#{namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showOrder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{Beschreibung, JdbcType = varchar}}) </bit}, JdbcType = varchar}}) </bit}Nach Abschluss des Einfügungsvorgangs wurde das ID -Attribut der Parameterkategorie zugewiesen
Wenn der Primärschlüssel der Datenbanktabelle kein Selbststillstandstyp ist, muss die Anwendungsschicht den Primärschlüssel generieren. Ich werde nicht viel dazu sagen. Freunde, die es brauchen, können eine Nachricht hinterlassen, um zu kommunizieren.
Das Folgende ist die Schreibmethode für Oracle. Oracle hat keine Autoinkremente, aber Currval mit Triggern ist im Auslöser definiert.
<einfügen id = "parameterclass =" profEEPEEPINDObject "> <! [cdata [intin in t_pro_feekind (KindID, KindName, KindType, Enable) Werte (seq_t_pro_feekind_id.nextval,#Kindname#,##,#,##ENABLED#),#)> <)> <)> < KeyProperty = "KindID"> SELECT SEQ_T_PRO_FEEKIND_ID.CURRVAL AS KINTID VON DUAL </SELECTKEY> </einfügen> <!-Das Folgende ist die Schreibmethode für mySQL-> <!-<!
Andere Referenzcodes:
Wenn wir ein Entitätsobjekt bestehen (z. B. ein Objekt speichern), erhalten wir, wenn wir SelectKey nicht verwenden, das ID -Attribut des Entitätsobjekts nicht sofort den Primärschlüssel der Data -Tabelle.
Java -Code
Erlaubnis Erlaubnis = neue Erlaubnis (); Erlaubnis.Set ... Permisondao.CreatePermission (Genehmigung); Assertnull (Genehmigung); Erlaubnis Erlaubnis = neue Erlaubnis (); Erlaubnis.Set ... Permisondao.CreatePermission (Genehmigung); Assertnull (Genehmigung);
Das SelectKey -Element bezieht sich auf seine Position im übergeordneten Element
<einfügen id = "addPermission" parameterclass = "Berechtigung"> <selectKey resultClass = "int" keyproperty = "promissionID"> select seq_p_permission.nextval von Dual </selectKey> In einfügen. #permissionEnName#, #url#) </insert><insert id="addPermission" parameterClass="Permission"><selectKey resultClass="int" keyProperty="permissionId"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION (PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL) VALUES (#permissionId#, #permissionInfo #, #permissionName #, #permissionenname #, #url #) </einfügen>
MySQL und SQLServer sind dahinter
XML -Code
<Einfügen id = "AddPermission" ParameterClass = "Berechtigung"> In P_permission (Erlaubnis, Berechtigung, Erlaubnis, Erlaubnisname, URL) Werte ( #promissionID #, #permissionInfo #, #permissionName #, #permissionenName #, # # #) <selecty -resultclasse = "int" int "int" int "int" int "int" int "int. </selectKey> </einfügen> <id = "AddPermission" Parameterclass = "Berechtigung"> In P_permission (Erlaubnis, Erlaubnis, Berechtigung, Erlaubnis, Url) Werte (#promissionID#,#permissionInfo#,#"Intname##, #url#) <Selecy,##url#) <Selecy. Last_insert_id () </selectKey> </einfügen>
Wie oben geschrieben ist es zu eng mit dem Ort von SelectKey verwandt. Das SelectKey -Element der SQLMAP -Konfigurationsdatei von Ibatis verfügt über ein Typattribut, das angeben kann, ob vor oder Post die Generation vor oder nach der Generation darstellt.
Für Oracle ist es
XML -Code
<insert id="addPermission" parameterClass="Permission"> <selectKey resultClass="int" keyProperty="permissionId" type="pre"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION ( PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL ) VALUES ( #permissionId#, #permissionInfo#, #permissionName#, #permissionEnName#, #url#) </insert> <insert id="addPermission" parameterClass="Permission"><selectKey resultClass="int" keyProperty="permissionId" type="pre"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION (PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL) -Werte (#permissionID#,#permissionInfo#,#tätigungName#,#promissionenname#,#url#) </einfügen>
MySQL, SQLServer usw. werden ausgedrückt als:
XML -Code
<einfügen id = "addPermission" parameterclass = "Berechtigung"> <selectKey resultClass = "int" keyProperty = "promissionID" Typ = "post"> select last_insert_id () </selectKey> In einfügen in p_permission (procuredyID, tätig, genehmigten #Berechtigungsenname #, #URL #) </einfügen>
Die oben genannte Methode ist die Methode, den Primärschlüssel in MyBatis in MyBatis zurückzugeben, das Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!