جسم MyBatis الأصلي هو Ibatis ، والآن انفصل عن مؤسسة Apache. الموقع الرسمي الجديد هو http://www.mybatis.org/.
لم أكن أعرف الاستخدام السحري لهذا التعليق التوضيحي قبل دراسة رمز مصدر MyBatis ، لكن عندما رأيت أنه كان هناك هذا التعليق التوضيحي عند تحليل المعلمة ، فهمت أنه عندما نرجع أنواعًا مثل الخريطة ، خريطة <سلسلة ، كائن >> ، فغالبًا ما يكون من الصعب علينا القيام بذلك ، لأنه قد يكون بيانات من طاولات متعددة ، لذلك من المستحيل أن نبني نموذجًا آخر.
ثم يمكننا استخدام هذا التعليق التوضيحي
reentione (attreentionpolicy.runtime) target (elementType.method) public interface mapkey {string value () ؛}من الواضح أن هذا التعليق التوضيحي يستخدم على الطريقة ، والاستخدام المحدد هو تعيين ماهية مفتاح الخريطة الخارجية. بهذه الطريقة يمكننا الاستعلام عن نتائج معقدة للغاية دون إنشاء كيان جديد.
ملاحظة: دعنا نلقي نظرة على mybatis باستخدام @mapkey enootation لتلقي سجلات استعلام متعددة في الخريطة ، وذلك للحصول على قيمة الحقل بسهولة باستخدام طريقة get ().
سيناريو المتطلبات:
الدُفعات الدُفعة عدة أجزاء من البيانات من قاعدة البيانات ، بما في ذلك حقولان: المعرف والاسم. آمل أن يتم استلام النتيجة مباشرة باستخدام الخريطة ، ثم يمكن الحصول على قيمة الاسم بسهولة من خلال map.get (id).
سؤال:
إذا كنت تستخدم الكود التالي ، إذا كان هناك العديد من نتائج الاستعلام ، فسيتم الإبلاغ عن خطأ ، لأن MyBatis يحفظ النتائج في الخريطة في شكل ("معرف: 123) و (" الاسم ":" Jack "). لذلك إذا قمت بإرجاع النتيجة ، فلا بأس أن يكون لديك سجل بما في ذلك المعرف والاسم ؛ إذا قمت بإرجاع سجلات متعددة ، أي ، هناك متعددة ("ID": 123) و ("ID": 124) ، فسيكون MyBatis غبيًا ولا يعرف كيفية التعامل معه.
خريطة <string ، object> m = abcdao.getNamesByids (idlist) ؛
الحل هو استخدام خريطة أخرى في الخارج:
الخريطة <integer ، خريطة <string ، object >> m = abcdao.getNamesByids (idlist) ؛
ثم أضف تعليقًا توضيحيًا إلى هذه الطريقة:
<span style = "White-Space: pre"> </span>/** <span style = "White-Space: pre"> </span> احصل على الاسم على دفعات استنادًا إلى ids متعددة <span style = "white-space: pre"> </span> * @param list التي تحتوي style = "White-Space: Pre"> </span> */<span style = "White-Space: Pre"> </span> mapkey ("id") <span style = "white-space: pre"> </span> map public <integer ، map <string ، object >> getNamesByids (list <string ، object> list) ؛يشير هذا التعليق إلى أن مفتاح الخريطة الخارجية هو قيمة الحقل المسمى "ID" في نتيجة الاستعلام.
التكوين في mapper.xml كما يلي:
<حدد ID = "getNamesByids" resultType = "java.util.map"> حدد المعرف ، الاسم من tb_abc حيث معرف في <foreach item = "item" collection = "list" open = "(" deplator = "،" close = ")ما سبق هو شرح مفصل لاستخدام mapkey في شرح MyBatis الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!