عند استخدام MyBatis كطبقة الثبات ، فإن عبارة INSERT تتخلف عن عدم إرجاع القيمة الرئيسية الرئيسية للسجل ، ولكنها تُرجع عدد السجلات المدرجة. إذا كانت طبقة العمل تحتاج إلى الحصول على المفتاح الأساسي للسجل ، فيمكن إكمال هذه الوظيفة من خلال التكوين.
بالنسبة للمفتاح الأساسي للتسلسل ، قبل تنفيذ إدراج SQL ، يجب تحديد قيمة المفتاح الأساسي للسجل الذي سيتم إدراجه ، مثل Oracle و DB2. يمكن استخدام طريقة التكوين التالية:
<insert id = "add" parametertype = "vo.category"> <selectekey resulttype = "java.lang.short" order = "in" keyproperty = "id" (#{namezh ، jdbctype = varchar} ،#{parentid ، jdbctype = smallint} ،#{showorder ، jdbctype = smallint} ،#{deletestatus ، jdbctype = bit} ،#{description ، jdbctype = varchar}) </insert>بالنسبة للجداول ذات المفاتيح الأولية للذات ، لا توجد حاجة إلى مفتاح أساسي عند الإدراج ، ولكن يتم الحصول على مفتاح أساسي للذات تلقائيًا أثناء عملية الإدراج. على سبيل المثال ، MySQL ، يمكن اعتماد طريقتين التكوين التاليين:
<insert id = "add" parametertype = "vo.category" useGeneratedKeys = "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"> <selectekey resulttype = "java.lang.short" order = "بعد" keyproperty = "id" (#{namezh ، jdbctype = varchar} ،#{parentid ، jdbctype = smallint} ،#{showorder ، jdbctype = smallint} ،#{deletestatus ، jdbctype = bit} ،#{description ، jdbctype = varchar}) </insert>بعد اكتمال عملية الإدراج ، تم تعيين سمة المعرف لفئة المعلمة
إذا لم يكن المفتاح الأساسي لجدول قاعدة البيانات ليس نوعًا ذاتيًا ، فإن طبقة التطبيق تحتاج إلى إنشاء المفتاح الأساسي ..... لن أقول الكثير عن هذا. يمكن للأصدقاء الذين يحتاجون إليها ترك رسالة للتواصل ..
فيما يلي طريقة الكتابة لأوراكل. لا يحتوي Oracle على تلقائي ، ولكن يتم تعريف Currval التي تم تنفيذها مع المشغلات في الزناد.
<insert id = "insert" parameterclass = "profeekindobject"> <! keyproperty = "kindid"> حدد SEQ_T_PRO_FEEKIND_ID.CURRVAL كأنه من dual </selectkey> </insert> <!-ما يلي هو طريقة الكتابة لـ mysql-> <!-<selectekeke
رموز مرجعية أخرى:
عند استمرار كائن كيان (مثل حفظ كائن) ، إذا لم نستخدم SelecteKey ، فلن نحصل على الفور على سمة المعرف لكائن الكيان ، أي مفتاح جدول البيانات الأساسي.
كود جافا
إذن إذن = إذن جديد () ؛ إذن. assertnull (إذن) ؛ إذن إذن = إذن جديد () ؛ إذن. assertnull (إذن) ؛
يرتبط عنصر seleckekey بموقفه في العنصر الأصل
<insert id = "addpermission" parameterClass = "SERMISSE"> <SELECTEKEY REVERCLASS = "int" keyProperty = "SERMISSED"> SELECT SEQ_P_PERMISSION.NEXTVAL من Dual </selectekey> insert في p_permission (إذن ، #SERMISSENNAME#،#url#) </insert> <insert id = "AddPermission" parameterclass = "SERMISSE"> <selectekey resultclass = "int" keyproperty = "samplisionID" #SERMISSONINFO #، #SERMISSENAME #، #SERMISSENNAME #، #url #) </insert>
MySQL و SQLServer وراء
رمز XML
<insert id = "addpermission" parameterclass = "SERMISSE"> insert في p_permission (إذن ، إذن ، SERMISSENNAME ، SERMISSENNAME ، url) ( #SERMISSIONID #، #SERMISSEINFO #، #SERMISSERNAME #، #SERMISSENNAME #، #url #) </selectekey> </sert> <insert id = "addpermission" parameterClass = "SERMISSE"> insert في p_permission (إذن ، إذن ، إذن ، إذن ، إذن ، url ، url) قيم (#premissionID#، last_insert_id () </selectekey> </sert>
مكتوب مثل ما سبق ، يرتبط ارتباطًا وثيقًا بموقع SelecteKey. يحتوي عنصر SELECTEKEY في ملف تكوين SQLMAP الخاص بـ IBATIS على سمة من النوع ، والتي يمكن أن تحدد ما إذا كان ما قبل أو منشور يمثل الجيل قبل أو بعد الجيل.
لأوراكل ، هو كذلك
رمز XML
<insert id = "addpermission" parameterClass = "SERMISSE"> <selecteKey ResultClass = "int" keyproperty = "SERMISSED" type = "pre"> select seq_p_permission.nextval from dual </selectekey> insert في p_permission (إذن ، إذن ، إذن ، إذن ، ترتيب ، url) ( #SERMISSENAME #، #SERMISSENNAME #، #url #) </insert> <insert id = "addpermission" parameterclass = "semission"> <selecteKey resultclass = "int" keyproperty = "semrissionId" type = "pre" الإذن ، url) القيم (#إذن#،#إذن ،
يتم التعبير عن mysql ، sqlserver ، وما إلى ذلك على النحو التالي:
رمز XML
<insert id = "addpermission" parameterClass = "SERMISSE"> <selecteKey ResultClass = "int" keyproperty = "SERMISSED" type = "post" #SERMISSENNAME #، #url #) </insert>
ما سبق هو طريقة إعادة المفتاح الأساسي في MyBatis في MyBatis الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!