MyBatis هو مشروع مفتوح المصدر من Apache. في عام 2010 ، تم نقل هذا المشروع من مؤسسة Apache Software Foundation إلى Google Code وتم إعادة تسمية MyBatis. فيما يلي تقديم رسم خرائط MyBatis المتقدم ، SQL الديناميكي والحصول على محتوى المفتاح الأساسي التلقائي. لمزيد من التفاصيل ، يرجى الرجوع إلى هذا المقال.
1. ديناميكي SQL
أعتقد أن الجميع سيواجهون دائمًا مشكلة عند استخدام MyBatis لتشغيل قاعدة البيانات. إذا كان لدينا الآن قائمة مؤلفة حول المؤلف ، فنحن بحاجة إلى الاستعلام عن معلومات المدونة للمؤلف المقابل في قاعدة البيانات بناءً على معلومات المؤلف الحالية في قائمة المؤلف. ثم أسهل طريقة للتفكير هي اجتياز قائمة المؤلفين والحصول على المعلومات المقابلة للاستعلام عن قاعدة البيانات.
لـ (int i = 0 ؛ i <upherlist.size () ؛ i ++) {... // code database code // select * from blog where upert =#{uperm ، jdbctype = varchar}}}فكر في الأمر ، إذا كان طول المؤلف هو n ، فسنحتاج إلى الاستعلام عن قاعدة البيانات n. إذا استخدمنا هذه الطريقة ، فإن النفقات العامة للبرنامج لا تتعلق بالاستعلام فحسب ، بل أيضًا حول إخراج مثيل الاتصال من مجموعة اتصال قاعدة البيانات ، وإنشاء اتصال قاعدة بيانات ، وإرجاع مثيل قاعدة البيانات إلى مجموعة اتصال قاعدة البيانات. افترض أن هذه الإجراءات الثلاثة تستغرق 0.001 ثانية. ثم ، إذا كنت تستخدم أساليب اجتياز للاستعلام ، فسوف يستغرق الأمر 0.001n ثانية أكثر. إذا كنت بحاجة إلى الاستعلام عن 1000 مرة ، فسيكون ذلك ثانية واحدة. هذا أمر لا يطاق للمبرمجين ، لأن هذا مجرد استعلام دائري ولا يعتبر رمز أعمال آخر.
إذن ، هل هناك طريقة أفضل؟ الجواب نعم ، أحدها هو SQL ديناميكي:
قم بتحميل الرمز أولاً:
<select id = "dynamicforeachtest" resulttype = "com.blog.blog" parametertype = "java.util.list"> select * from blog where where in <foreach collection = "list" index = "index =" exter>
يمثل TEM الاسم المستعار عندما يتم تكرار كل عنصر في المجموعة.
يحدد الفهرس اسمًا لتمثيل الموضع الذي يتم الوصول إليه لكل تكرار أثناء عملية التكرار.
ووسائل مفتوحة حيث يبدأ البيان ،
يشير الفاصل إلى الرمز الذي يستخدم كفاصل بين كل تكرار.
يشير Close إلى ما ينتهي بحيث يمكن قبول قيمة الإرجاع باستخدام القائمة <Bolg>.
ومع ذلك ، فإن بيان foreach في Dynamic SQL يستخدم الشيء الأكثر واقعية في إدراج عبارات وعادة ما يتم استخدامه في الجمل.
2. رسم الخرائط المتقدمة
عند استخدام MyBatis ، يتم استخدام ResultType = com.blog.author Creytity Class بشكل عام لقبول نتائج الاستعلام.
أو استخدم resultType = java.util.map لإرجاع اسم عمود قاعدة البيانات كمفتاح وقيمة السجل كقيمة.
ولكن هذه المرة ، هناك حاجة إلى ResultMap ، مما يسمح بمجموعة مجانية من قيم الإرجاع للتعامل مع استعلامات أكثر تعقيدًا.
أو فقط قم بتحميل الرمز أولاً:
SQL:
<SELECT ID = "getBlogs" resultmap = "blogs" parametertype = "map"> حدد A.AuthorId ، A.Uthorname ، B.Blogid ، B.BlognameFrom A A Left Join Blog B on A. مؤلف = ب. مؤلف حيث أ. upervid = #{uptorid ، jdbctype = integer} </rection>تكوين MyBatis:
<resultmap id = "blogs" type = "com.bloh.blog"> <id property = "uptureD" column = "eventiD"> <result property = "uperOname" column = "authorname"> <collection property = "postlist" optype = "com com.bolg.post"> id propert Property = "Blognam"/> </resultmap>
فئة كيان المدونة
الفئة العامة bolg {private Integer AuthorId ؛ private String Authorname ؛ قائمة خاصة <post> postlist ؛ // setter getter}بعد فئة الكيان
Public Class Post {Private Integer Blogid ؛ private String Blognam ؛ // setter getter}هذا يتيح لك قبول استعلام معقد مع كيان.
فيما يلي وظيفة كل سمة:
لن أخوض في تفاصيل حول الخصائص الأخرى وتكوينات استفسارات MyBatis العادية.
يتم استخدام ResultMap بدلاً من ResultType ، مما يشير إلى التنسيق الذي تم إرجاعه بواسطة نتيجة الاستعلام
يحتوي المعرف في ResultMap على وظيفتين رئيسيتين:
فهارس مماثلة لتحسين أداء الاستعلام
تمييز نتائج مختلفة
لذلك ، من الأفضل عدم حذف المعرف. إذا لم يكن هناك مفتاح أساسي ، فاستخدم حقلًا يمكنه تمييز السجلات بشكل فريد بدلاً من ذلك.
النتيجة هي الاسم المتغير المحدد في فئة الكيان ، والعمود هو اسم العمود لقاعدة البيانات
المجموعة عبارة عن مجموعة من القوائم والخرائط وما إلى ذلك.
PostRist هو اسم متغير القائمة المحدد في فئة كيان المدونة
Oftype هو فئة الكيان للكائن في قائمة الكائنات.
3. الحصول على معرف التدوير الذاتي:
إذا كان هناك الموقف التالي ، بعد إدخال سجل قاعدة البيانات ، فأنت تريد الحصول على المفتاح الأساسي لسجل الإدراج ، واستخدام رمز العمل اللاحق
ثم يوفر MyBatis أيضًا الدعم المقابل لهذا الموقف (إدراج الدُفعات غير مدعوم):
MySQL هو معرّف الصوت الأصلي للذات ؛ على افتراض الاسم الحقل للمفتاح الأساسي المتزايد هو معرف
<insert id = "insert" useGeneratedKeys = "true" keyproperty = "id" parametertype = "user"> insert in <refid =
هناك سمتان آخران من الإدراج العادي usegeneratedKeys = "true" مما يعني أنه يعيد معرف التمييز الذاتي عند تمكينه.
KeyProperty = "id" يعني اسم المفتاح الأساسي للعودة.
ثم يمكنك استخدام العبارات التالية لتلقيها في رمز العمل:
افترض أن فئة الكيان مستخدم
usernew usernew = usermapper.insert (user) ؛
usernew.getid // هو المعرف الذي تم تثبيته تلقائيًا بعد الإدراج
في الواقع ، يمكن الحصول على مفتاح MySQL التلقائي لـ MySQL بواسطة SELECT LAST_INSERT_ID () ؛
لذلك ، هناك طريقة أخرى لكتابتها:
<insert id = "insert" parametertype = "user"> <selecteKey resultType = "int" order = "بعد" keyproperty = "id"
إنه بالضبط عكس طريقة MySQL للحصول على المفاتيح الأولية. MySQL هو الجدول الذي يخصص قيمة النمو الذاتي بعد إدراج تنفيذ ، بينما تحصل Oracle على قيمة النمو الذاتي قبل إجراء SQL Insert. قبل تنفيذ إدراج SQL ، يجب تحديد قيمة المفتاح الأساسي للسجل المراد إدراجه. لذلك ، تحتاج إلى الحصول على تسلسل النمو الذاتي في "قبل" ، ثم حقنه في خريطة المعلمة بواسطة SelecteKey. افترض النمو الذاتي أو الهوية
<insert id = "insert" usegeneratedKeys = "true" keyproperty = "id" parametertype = "xxxx"> <selectKey resultType = "int" order = "in" keyproperty = "id"> select seq_table.nextval from dual </seleckeke ) </insert>
المعرف هنا هو معرف التلقائي التلقائي الذي تم الحصول عليه بواسطة SelecteKey.
طريقة الاستقبال هي نفس MySQL. عند الحصول على المفتاح الأساسي للتركيب التلقائي ، من الأفضل استخدام استقبال الكيان.
ما سبق هو رسم الخرائط المتقدمة MyBatis ، SQL الديناميكي والحصول على مفاتيح أساسية مضافة ذاتيا المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!