تقدم هذه المقالة بشكل أساسي كيفية حفظ بيانات الكيان. المحتوى المحدد كما يلي ؛
1. عينة XML
<؟ HH24: mm: ss "> <!-فيما يلي نتائج الاستعلام لكل تطبيق استعلام 1..n-> <cisreport reportid =" رقم التقرير " يتم فصل معرفات الإجراء الفرعية بواسطة passas "TreagraterResult =" أوقات عدد الرسوم المدمجة من الرسوم الفرعية ، المقابلة لأنواع الفرعية ، هي مجموعة من القيم أكبر من أو تساوي 0 ، مفصولة "الفاصلة" "subreporttypesshortcaption =" Query FEE Subort "refid =" Query ID ID IDEDENT QUARETER هناك خطأ ، خطأ: لا يوجد خطأ "isfrozen =" ما إذا كان العميل مجمد ، صحيح: مجمد ، خطأ: غير مجمد "> <!-1 Quarery Information 1..1-> <QueryConditions> <!-1..n-> <item> </queryconditions> <!-2- المصادقة 1..1-> <policecheckinfo subreporttype = "10602" subreporttypecost = "96040" treatmentResult = "code in in trhedratult = 3 is tertresult = 3 is thertresult at tr. عندما تكون treatresult! = 3 ، لا توجد هذه الخاصية "errormessage =" خطأ وصف المعلومات عند treatresult = 3 ، عندما تكون treatresult! 2 ، غير متناسق </result> </item> </policecheckinfo> <!-3 أشخاص من التحقق من رقم الهاتف المحمول 1..1-> <MobileCheckInfo subreporttype = "13612" الكود = "treatresult = 3 ، راجع قاموس البيانات للحصول على التفاصيل. errormessage = "خطأ وصف المعلومات عند treatresult = 3 ، عندما تكون treatresult! = 3 ، تكون قيمة هذه السمة فارغة"> <! --- treatresult هي 2 و 3 ، لا توجد عقد يتبع-> <item> بما في ذلك: نتائج التحقق من أرقام الهاتف المحمول ، غير متسقة ، وغير متسقة </documentNoCheckResult> <PhonecheckResult> مخاطر مضادة للاحتفال 1..1-> <PersonAntispOofingDescinfo SubReportType = "14225" SubReportTyPecost = "96040" TrugleResult = "Subreport Query status ، 1: found ، 2: غير موجود ، 3: لا توجد لأسباب أخرى" رمز الخطأ عندما يكون Treaterrorcode = 3 ، السمة غير موجودة. كما في المثال التالي ، قد يكون فارغًا ، وقد يكون هناك 0 أو N منها ، والتي يمكن إرجاعها وفقًا للنتيجة المحددة. 1. درجة مخاطر مكافحة الاحتيال هي 100 نقطة ، ومستوى المخاطر مرتفع ، ويوصى به رفض. 2. تم استخدام الهاتف المحمول رقم 131 **** 1542 لمدة تقل عن شهر واحد. 3. اضغط على قائمة أطراف الصوف. 4. قائمة مخاطر الاحتيال. 5. قائمة الموظفين المعرضين للخطر. 6. هناك 7 سجلات ائتمان متأخرة. 7. هناك 40 معلومات ملخص المخاطر الشخصية. 8. في العامين الماضيين ، تم الاستعلام عن معلوماتي الشخصية 23 مرة. -> <PersonAntispOofingDesc> معلومات مراجعة شخصية لمكافحة الاحتيال </personAntispOofingDesc> </personAntispOofingDesc> <!-5 معلومات شخصية مخاطر مضادة للدهشة 1..1-> <mormonantispoOfingInfo subreporttype = "14224" subreporttypecost = " 2: لم يتم التحقق منها ، 3: لم يتم التحقق منها لأسباب أخرى "رمز الخطأ عند treaterrorcode =" treatresult = 3 ، راجع قاموس البيانات للحصول على التفاصيل. errormessage = "خطأ وصف المعلومات عند treatresult = 3 ، عندما تكون treatresult! = 3 ، تكون قيمة هذه الخاصية فارغة"> <! ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 6 معلومات حالة رقم الهاتف المحمول 1..1 -> <mobilestatusinfo subreporttype = "13611" subreporttypecost = "96040" TreatmentResult = "Subreport Query status ، 1: find ، 2: لا توجد ، 3: لا توجد لأسباب أخرى" "كود خطأ =" treatresult = 3 ، errormessage = "خطأ وصف المعلومات عند treatresult = 3 ، عندما تكون treatresult! = 3 ، تكون قيمة هذه السمة فارغة"> <!-عندما تكون treatreatrosult 2 أو 3 ، لا توجد عقد متابعة-> <item> <purner> عامل التشغيل 1: الصين الاتصالات الجوال 3: الصين أحادية </properator> 1: الاستخدام العادي 2: الإغلاق 3: غير مُمكّن 4: تم إلغاء الرقم 5-آخر 6: ما قبل الإلغاء </phonestatus> <timeLength> رقم الهاتف المحمول على الإنترنت ، مثل: الوقت على الإنترنت ، أقل من شهر واحد ، 1-2 أشهر ، 3-6 أشهر ، 7-12 شهر قائمة أطراف الصوف 1..1-> <econnoisserurinfo subreporttype = "14228" subreporttypecost = "96040" TreatmentResult = "subreport Query status ، 1: find ، 2: غير موجود ، 3: لم يتم العثور عليها لأسباب أخرى" رمز الخطأ = "رمز الخطأ عند المعالجة =" عندما تكون treatresult! = 3 ، السمة غير موجودة "errormessage =" خطأ وصف الوصف عند treatresult = 3 ، عندما تكون treatresult! = 3 ، تكون قيمة هذه السمة فارغة "> <! --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- subreporttypecost = "96040" tregnResult = "Subreport Query حالة ، 1: البحث ، 2: غير موجود ، 3: لم يتم العثور عليها لأسباب أخرى" "treaterrorcode =" treatresult = 3 خطأ في رمز الخطأ ، راجع TRAETRESULT! من هذه الخاصية فارغة "> <!-عندما يكون treatreatrosult 2 أو 3 ، لا توجد عقد التالية-> <state> إذا كان يجب ضرب قائمة مخاطر الاحتيال ، القيمة: 0/1 ، 0 يعني ضياع قائمة مخاطر الاحتيال ، 1 يعني ضرب قائمة مخاطر الاحتيال </state> </fraudriskinfo> <! subreporttypecost = "96040" tregnResult = "Subreport Query حالة ، 1: البحث ، 2: لم يتم التحقق منها ، 3: لم يتم العثور عليها لأسباب أخرى" "treaterrorcode =" treatresult = 3 ، راجع Data Dictionary ، عند treatresult! = 3 ، السمة غير موجودة "errormessage = error erforder in ener من هذه السمة فارغة "> <!-عندما تكون treatreatrosult 2 أو 3 ، لا توجد عقد التالية-> <chectResult> ما إذا كان يجب ضرب القائمة عالية الخطورة 1: نعم ، 2: لا </checkResult> </personriskassess> <!-10 معلومات متوقفة على الإنترنت 1..1-> <MicronieryyiEarsOverDueSoverdueInfo subreportype =" 13204 " SubReportTypecost = "96040" TreatmentResult = "Subreport Query status ، 1: find ، 2: غير موجود ، 3: غير موجود لأسباب أخرى" رمز الخطأ عند treaterrorcode = "treatresult = 3 ، راجع قاموس البيانات للحصول على التفاصيل. عندما تكون treatresult! = 3 ، السمة غير موجودة. المعلومات الأساسية للقرض </overdueamount> <everduedays> فاصل زمني متأخر ، نطاق القيمة: متأخر في يوم واحد (شامل) أو أكثر </overduedays> <everdueCount> إجمالي عدد المعاملات في عدد أيام الإدارة المتأخرة- <everdueamount> مبدأ متأخر ، الوحدة: استنادًا إلى عملة المعلومات الأساسية للقرض </overdueamount> <everduedays> فاصل زمنية ، نطاق القيمة: 1-6 أيام مفرط ، أكثر من 7-29 يومًا من ذلك ، </أكثر من ذلك/متكافئ ، فلا يتجاوز عددها من 6 إلى 89 يومًا ، أكثر من 90 يومًا (بما في ذلك) </ الفاصل الزمني للأيام المتأخرة </overduecount> </item> </item> </micronearlyTreeyeAerSoverdueInfo> <!-11 معلومات المخاطر 1..1-> <personriskinfo subreporttype = "14227" subreporttypecost = "96040" علاج Quale = " رمز الخطأ عند treaterrorcode = "treatresult = 3 ، راجع قاموس البيانات للحصول على التفاصيل. عندما تكون treatresult! = 3 ، السمة غير موجودة. <!---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- <CqggCount> عدد المعلومات حول إعلان التوظيف </cqggcount> <WdyQCount> عدد المعلومات على القرض المتأخر عبر الإنترنت </wdyqcount> </stat> <!-معلومات الملخص-> <!-معلومات ملخص 0..1-> <!-معلومات موجزة 0..1-> <ALS> <! -> <item> <tradeId> رقم السجل </recordId> <bt> العنوان </bt> <ajlx> نوع الحالة </ajlx> <sjnf> سنة المراجعة ، التنسيق: yyyy </sjnf> <dsrlx> نوع الحزب </dsrlx> </item> </als> ملخص معلومات عن معلومات الإنفاذ القضائي 1..n-> <item> <troctionId> رقم السجل </recordId> <bt> العنوان </bt> <zxbd> كائن التنفيذ ، الوحدة: يجب أن تسود العملة </zxbd> <larq> تاريخ الإيداع ، تنسيق yyyy-mm-dd </larq> </zxs </zxs. <sxs> <!-معلومات موجزة عن الخرق القضائي لمعلومات الثقة 1..n-> <item> <troctionId> رقم السجل </recordId> <bt> العنوان </bt> <larq> تاريخ الإيداع ، تنسيق yyyy-mm dd </ariq> معلومات ملخص 0..1-> <sws> <!-ضرائب معلومات إنفاذ القانون الإدارية ، ملخص المعلومات ، محتوى المعلومات 1..n-> <item> <tromeid> رقم السجل </recordId> <bt> العنوان </bt> <ggrq> تاريخ الإعلان عن المعلومات ، معلومات إنفاذ القانون ملخص المعلومات محتوى المعلومات 1..n-> <item> <troctionId> رقم السجل </recordId> <bt> العنوان </bt> <fbrq> تاريخ الإصدار ، تنسيق yyyy-mm-dd </fbrq> </item> </cqs> <!- <Item> <tromtID> رقم السجل </recordId> <bt> العنوان </bt> <fbrq> تاريخ الإصدار ، تنسيق yyyy-mm-dd </fbrq> </item> </wdyqs> </summary> </somproportiNfo> <!-12 شخصًا سجلات التسجيلات التاريخية في السنتين الماضيين 1..1->. SubReportTypecost = "96040" TreatmentResult = "Subreport Query status ، 1: Check ، 2: 3: لم يتم العثور عليه لأسباب أخرى" "Code =" treatresult = 3 ، راجع Data Dictionary للحصول على التفاصيل! فارغ "> <! --- عندما يكون treatreatrosult هو 2 و 3 ، لا توجد العقد التالية-> <!-0..1-> <efect> <!-1..n-> <item> <Untermmember> اسم نوع الوحدة </unitmember> <last 1month> عدد سجلات الاستعلام في الشهر الماضي </last 1month> سجلات الاستعلام في الأشهر الستة الماضية </last6month> <ast12mon> عدد سجلات الاستعلام في الأشهر الـ 12 الماضية </last12month> <ast18month> عدد سجلات الاستعلام في الـ 18 شهرًا الماضية </last18mon> <last24mon> عدد سجلات الاستعلام في الـ 24 شهرًا الماضية </last24mon> </item> </yous </ سجلات الاستعلام في الشهر الماضي الماضي </last1month> <Last3mon> إجمالي عدد سجلات الاستعلام في الأشهر الثلاثة الماضية </last3monh> <Last6month> إجمالي عدد سجلات الاستعلام في الأشهر الستة الماضية </last6mon> <Staint12mon> إجمالي عدد سجلات الاستعلام في الأشهر الـ 12 الماضية </last12monh> <sast18mon> شهور </last18month> <Last24month> إجمالي عدد سجلات الاستعلام لكل نوع من الوحدة في الـ 24 شهرًا الماضية </last24month> </ount> </historysimplequeryinfo> </sisreport> </cisreports>
2. تصميم هيكل الجدول
1. رقم الدُفعة: يرتبط كل جدول برقم الدفعة الخارجية.
2. الجدول الرئيسي: أي ، يتم تخزين جميع حقول كل طبقة في جدول واحد.
ثلاثة ، تصميم مادي
وهي مقسمة إلى ثلاث طبقات: cisreportrout ، cisreportchild ، reportelement
الطبقة العامة cisreportroot يمتد BasePojo الأدوات التسلسلية {private string docid ؛ سلسلة خاصة batno ؛ // Query Doot Number @jsonfield (serialize = false) سلسلة خاصة xmlid ؛ خاص cisreportchild cisreportchild ؛/*** 2017/7/21. *تقرير عقدة خصائص وعقد الطفل*/الفئة العامة CisReportChild يمتد BasePojo {/***التقرير وقت الانتهاء **/سلسلة خاصة buildendtime ؛ / ***هل هناك خطأ في النظام صحيح أن هناك خطأ يعني أنه لا يوجد **/ سلسلة خاصة Hassystemerror ؛ / ***سواء تم تجميد العميل **/ سلسلة خاصة iSfrozen ؛ تقرير تقرير خاص ؛ يمتد ReportElement الفئة العامة BasePojo {Private String Phone ؛ policecheckinfo policecheckinfo ؛ // مصادقة الهوية mobilecheckinfo mobilecheckinfo ؛ // الشخص رقم الهاتف المحمول التحقق من personispoofingdescinfo personantispofinginfo ؛ // الشخصية anti-fraud المخاطر مراجعة المعلومات الخاصة personantispoofinginfinginfinfinginfinginfo ؛ mobiLestatusinfo mobilestatusinfo ؛ // رقم الهاتف المحمول معلومات الوضع معلومات خاصة econnoisserurinfo econnoisserurinfo ؛ MicronearlyTreeyearsoverdueInfo ؛ // عبر الإنترنت ، تأخرت القرض المعلومات الخاصة personriskinfo personriskinfo ؛ // معلومات المخاطرة التاريخ الخاصأربعة ، رمز
<1> معاملة واحدة ، لا يوجد مفتاح أساسي مطلوب على دفعات
يمكن تخزين البيانات في الخرائط في معاملات واحدة أو دفعات ، ويمكن الحصول على البيانات من خلال مفاتيح MAP في SQL.
يحب:
private void savePersonRiskinfo (سلسلة batno ، personriskinfo personriskinfo) يلقي الاستثناء {map <string ، object> map = new hashmap <> () ؛ map.put ("Batno" ، Batno) ؛ // map.put بيد واحدة ("العنصر" ، personriskinfo) ؛ pymapper.savepersonriskinfo (MAP) ؛ if (! listUtil.isempty (personriskinfo.getAllist ()))) {// batch map.put ("list" ، personriskinfo.getAllist ()) ؛ pymapper.savealinfolist (MAP) ؛ }SQL:
<!-سجل المخاطر الشخصي-> // single <insert id = "savePersonRiskinfo" parametertype = "java.util.map"> insert في Date_person_risk_info (Batno ، TotleCount ، alcount ، zxcount ، sxcount ، swcount ، cqggcount ، wdyqcount) ( #{batno ، jdbctype = varchar} ، #{item.totleCount ، jdbctype = numeric} ، #{item.alcount ، jdbctype = numeric} ،#{item.zxcount ، jdbctype = numeric} ،#{item.sxcount ، jdbctype = numeric} ،#{ item.swcount ، jdbctype = numeric} ،#{item.cqggcount ، jdbctype = numeric} ،#{item.wdyqcount ، jdbctype = numeric}) </insert> <!-سجل مفصل من المتأخرة-> // الدفعة <insert id = "savemonearlyTreeAerSoverdueInfolist" parametertype = "java.util.map"> insert في table_mntyoi (batno ، overdueamount ، overduedays ، #{batno ، jdbctype = varchar} ، #{item.overdueamount ، jdbctype = varchar} ، #{item.overduedays ، jdbctype = varchar} ، #{item.overduecount ، jdbctype = numer invokepy (pyquerybean pyquerybean) يلقي الاستثناء {pyquerybean.setqueryfrompy (query_from_py) ؛ // استدعاء خدمة py cisreportrout cisReporTrout = QueryCisReportFrompyServer (pyquerybean) ؛ cisreportroot.getCisReportChild (). //cacheservice.save(cisReporTrout) ؛ // (1) حفظ البيانات saveCisReport (cisreportroot) ؛ إرجاع cisreportroot ؛ }(1) حفظ البيانات
TransActional (Rollbackfor = issection.class) Override public cisreportroot savecisReport (cisreportrout cisReporTrout) يلقي استثناء {try {ReportElement reportElement = cisreportrot.getcisreportchild (). getReportElement () ؛ personriskinfo personriskinfo = reportElement.getPersonRiskinfo () ؛ // (2) الجدول الرئيسي ، احفظ جميع معلومات العقدة من XML (باستثناء معلومات المخاطر الشخصية) ، حفظ البيانات المفردة pymapper.savecisreport (cisreportrout) ؛ if (success.equals (cisreportrot.getCisReportChild (). getReportElement (). getPersonRiskinfo (). } if (cisreportrot.getCisReportChild (). // (3) حفظ بيانات الدُفعات map.put ("batno" ، cisreportrot.getBatno ()) ؛ if (! listUtil.isempty (cisreportrot.getCisReportChild (). getReportElement (). cisreportroot.getCisReportChild (). pymapper.SaveHistorySimpleQueryInfolist (MAP) ؛ } if (! listUtil.isempty (cisreportrot.getCisReportChild (). getReportElement (). cisreportroot.getCisReportChild (). getReportElement (). pymapper.SavemonearlyTreeyearsoverdueInfolist (MAP) ؛ }} إرجاع cisreportroot ؛ } catch (استثناء e) {logger.error ("sevecisReport@pyserviceimpl_exception" ، e) ؛ رمي ه ؛ }}(2) احفظ الجدول الرئيسي
<insert id = "sevecisreport" parametertype = "java.util.map"> insert في table_cisreport (batno ، buildendtime ، isfrozen ، MCI_NAMECHECKRESULT ، MCI_AREAINFO ، MCI_DOCUMINENCECKRESULT ، MCI_OPERATOR ، MCI_PHONECHECKRESULT ، PCI_DOCUMINENO ، PCI_NAME ، PCI_RESULT ، PASDI_DESC ، PASI_HITTYPES ، PASI_RISCLEVEL ، PASI_RISKS. ms_areainfo ، ms_canceltime ، ms_operator ، ms_phonestatus ، ms_timeLength ، econnoisserur ، fraudrisk ، pra_checkresult ، mntyoi_overdueamount ، mntyoi_overduecount ، mntyoi_overdueCount HS_LAST1MONTH ، HS_LAST3MONTH ، HS_LAST6MONTH ، HS_LAST12MONTH ، HS_LAST18MONTH ، HS_LAST24MONTH ، PHONE ، XMLID) القيم (#{BATNO ، JDBCTYPE = varchar} ، to_date ( #{cisreportchild.buildendtime} ، 'yyyy-mm-dd hh24: mi: ss') ، #{cisreportchild.isfrozen ، jdbctype = varchar} ، #{cisReportChild.ReportElement.mobileCheckinfo.nameCheckResult ، jdbctype = varchar} ، #{cisreportchild.reportelement.mobilecheckinfo.areainfo ، jdbctype = varchar} ، #{cisreportChild.ReportElement.mobileCheckInfo.DocumentNoCheckResult ، jdbctype = varchar} ، #{cisreportchild.reportlement.mobilecheckinfo.operator ، jdbctype = numeric} ، #{cisReportChild.ReportElement.mobileCheckInfo.phonecheckResult ، jdbctype = varchar} ، #{cisreportchild.reportlement.policecheckinfo.documentno ، jdbctype = varchar} ، #{cisreportchild.reportelement.policecheckinfo.result ، jdbctype = numeric} ، #{cisreportchild.reportlement.personantispoofingdescinfo.personantispofingdesc ، jdbctype = varchar} ، #{cisReportChild.ReportElement.PersonAntispOofingInfo.hittypes ، jdbctype = varchar} ، #{cisreportchild.reportelement.personantispoofinginfo.risklevel ، jdbctype = varchar} #{cisreportChild.ReportElement.PersonAntispOofingInfo.riskscore ، jdbctype = varchar} ، #{cisreportchild.reportelement.personantispoofinginfo.suggest ، jdbctype = varchar} ، #{cisreportchild.reportlement.mobilestatusinfo.areainfo ، jdbctype = varchar} ، #{cisreportchild.reportelement.mobilestatusinfo.canceltime ، jdbctype = varchar} ، #{cisreportchild.reportelement.mobilestatusinfo.Operator ، jdbctype = numeric} ، #{cisreportchild.reportelement.mobilestatusinfo.phonestatus ، jdbctype = numeric} ، #{cisreportchild.reportelement.mobilestatusinfo.timelength ، jdbctype = varchar} ، #{cisreportchild.reportlement.econnoisserurinfo.state ، jdbctype = numeric} ، #{cisreportchild.reportlement.fraudriskinfo.state ، jdbctype = numeric} ، #{cisreportchild.reportlement.personriskassess.checkresult ، jdbctype = numeric} ، #{cisreportchild.reportlement.micronearlyyearsoverdueinfo.overdueamount ، jdbctype = varchar} ، #{cisreportchild.reportelement.micronearlyyearsoverdueinfo.overduecount #{cisreportchild.reportlement.micronearlyyearsoverdueinfo.overduedays ، jdbctype = varchar} ، #{cisreportchild.reportelement.historysimplequeryinfo.totalcount.last1month ، jdbctype} #{cisreportchild.reportlement.historysimplequeryinfo.totalcount.last3month ، jdbctype = numeric} ، #{cisreportchild.reportlement.historysimplemple #{cisreportchild.reportlement.historysimplequeryinfo.totalcount.last12month ، jdbctype = numeric} ، #{cisreportchild.reportelement.historysimplequeryinfo.totalcount.last18month ، jdbctype}. #{cisreportchild.reportlement.historysimplequeryinfo.totalcount.last24month ، jdbctype = numeric} ، #{cisreportchild.reportelement.phone ، jdbctype = varchar} ، #(3) حفظ بيانات الدُفعات (لا يتم إنشاء مفاتيح أساسية تلقائيًا)
<!-سجل الاستعلام التاريخي الشخصي على مدار العامين الماضيين-> <insert id = "saveHistorySimpleQueryInfolist" parametertype = "java.util.map"> insert في table_history_simple_query (batno ، unit_member ، last 1month ، last6month ، last12mon ، last18month < collection = "list" item = "item" seplator = "Union all"> (حدد #{batno ، jdbctype = varchar} ، #{item.unitmmember ، jdbctype = varchar} ، #{item.last1month ، jdbctype = numeric} ، #item.last3month ، #{item.last6month ، jdbctype = numeric} ، #{item.last12month ، jdbctype = numeric} ، #{item.last18month ، jdbctype = numeric} ، #{item.last24mon ، jdbctype = numeric} <2> ضربة واحدة ، يجب إدراج الدُفعة في المفتاح الأساسي
السكتة الدماغية الواحدة تحتوي على المفتاح الأساسي
dataServedEtailResultUlt DataServedEtailResult = tdService.getDataservedEtailResult (tdreportrotot) ؛ int n = tddataservicemapper.insertDatAservedEtailResult (dataServicedetailResult) ؛ <!-واجهة التحقق من المعلومات-> <!-DataService-> <insert id = "insertDatAservedEtailResult" parametertype = "dataServedeTailResult"> <selectekey keyproperty = "id" resultType = "bigDeCimal" order = "قبل" ics_td_dataservice (id ، recordId ، quise_desc ، quision_code ، success) القيم ( #{id ، jdbctype = decimal} ، #{recordId ، jdbctype = decimal} ، #{redondesc ، jdbctype = varchar} ، #{quientcode ، jdbctype ، #{success ، jdbctype = decimal}) </insert>يحتوي حفظ الدُفعة على المفتاح الأساسي
if (! listUtil.isempty (interfaceslist)) {map.put ("recordId" ، id) ؛ map.put ("list" ، interfaceslist) ؛ tddataservicemapper.addbatchinterfaces (MAP) ؛ }SQL:
<!-دفعة حفظ واجهات-> <insert id = "addBatchInterFaces" parametertype = "java.util.list"> <!-التعليق هو طريقة إدخال mySQL. يمكن إدراجها ، ولكن لا يمكن التراجع عن البيانات. فيما يلي طريقة إدراج Oracle: لاحظ أن المعلمة: java.util.list أو java.util.map يمكن أن تبدأ <foreach collection = "list" item = "item" index = "index" explator = "" "> #{RecordId ، jdbctype = decimal} ، #{item.type ، jdbctype = varchar}) ؛ </foreach> الالتزام ؛ End ؛-> insert في ics_td_interfaces (معرف ، سجل ، اكتب) حدد seq_ics_td_interfaces.nextval معرف ، A.* من (<foreach collection = "list" item = "item" index = "index" explator = "Union all" </foreach>) A </sert>لخص
ما سبق هو طريقة حفظ البيانات المادية في دفعة واحدة من قبل المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!