مبدأ الإستراتيجية البطيئة: فقط عند استخدام البيانات التي يتم إرجاعها عن طريق الاستعلام ، يتم إصدار SQL فعليًا إلى قاعدة البيانات ، وإلا فلن يتم إصدارها (تستخدم بشكل رئيسي في الاستعلامات المشتركة لجداول متعددة)
1.
لنفترض أن هناك جدول شخص وجدول بطاقة في قاعدة البيانات: يحتوي جدول الشخص على حقول PID و PNAME و PAGE و PSEX و CID و CARD لها حقول CID و CNUM ؛
افترض أنك تريد الاستعلام عن اسم شخص ما ورقم الهوية:
المبدأ: عند الاستعلام عن الاسم ، فإن الإصدار الفعلي لا يستفسر عن رقم المعرف. فقط عندما تستخدم المحطة الحالية رقم المعرف ، فسيصدر استعلامًا إلى البطاقة. إنها استراتيجية للاستعلام عن رقم الهوية ؛
مثال التنفيذ:
خطوات التنفيذ:
1-import mybatis حزمة جرة التبعية
ملف Log4J 2-ADD (يمكن عرض البرامج التنفيذ الفعلية في الذاكرة)
1-PRINCIPLE: فقط عند استخدام المحطة الحالية رقم المعرف ، سيتم إصدار الاستعلام إلى البطاقة ، وإلا يتم إصدار الاستعلام لمعلومات الشخص فقط.
2-فتح كسول: في conf.xml
<Steptings> <STETTER NAME = "lazyloadingEnabled" value = "true"/> <setting name = "Aggressivelazyload" value = "false"/> </settings>
3. التنفيذ:
(1) في ملف تعيين mapper.xml:
<حدد ID = "findCID" parametertype = "int" resultType = "card"> حدد * من البطاقة حيث cid =#{value} < /select> <resultmap type = "person" id = "p_c1 column = "psex" property = "psex"/> <ensivand property = "card" javatype = "card" select = "findCID" column = "cid"> </isnivers 1-select: حدد بيان الاستعلام المرتبط به
عمود 2: حدد قيمة الحقل في العبارة الرئيسية التي يتم تمريرها كمعلمة لبيان SQL العبيد
(2) تحديد الطريقة في واجهة Mapper:
الشخص العمومي selectPersonAndCardLazyBypid (int pid) ؛
(3) نتائج الاختبار باستخدام Junit:
1. هنا استعلام يرسل فقط معلومات الشخص ؛
test public void testselectpersonandcardLazyBypId () {// السياسة الكسول من شخص واحد إلى واحد p = pm.selectpersonAndCardLazyBypid (1) ؛ //system.out.println(P) ؛ System.out.println (p.getPname ()+"،") ؛ //system.out.println(p.getPname ()+"،"+p.getCard (). getCnum ()) ؛ }بيان استعلام تنفيذ النتيجة:
2. يتم إصدار الاستعلام إلى البطاقة فقط عندما تستخدم المحطة الحالية رقم المعرف
test public void testselectpersonandcardLazyBypId () {// السياسة الكسول من شخص واحد إلى واحد p = pm.selectpersonAndCardLazyBypid (1) ؛ //system.out.println(P) ؛ System.out.println (p.getPname ()+"،") ؛ system.out.println (p.getPname ()+"،"+p.getcard ().بيان استعلام تنفيذ النتيجة:
2.
مثال التنفيذ:
افترض أن هناك جدول شخص وجدول معلومات هوية البطاقة في قاعدة البيانات ، وجدول عنوان ADDER: حيث توجد حقول في جدول الشخص ، PNAME ، PEGE ، PSEX ، CID ، TABLE CARD ، وحقول CNUM في جدول ADDER ؛ يحتوي جدول الأفعى على الحقول المساعدات ، آشي ، بيد
افترض أنك تريد الاستعلام عن اسم شخص ما وعنوانه ورقم هويتك:
(1) ملف تعيين mapper.xml:
<!-الإستراتيجية البطيئة من شخص واحد-> <تحديد معرف = "fingcard_adder" parametertype = "int" resultType = "adder"> select * from adder حيث pid =#{value} </select> <select id = "findCid1" parametertype = int type = "person" id = "p_c1_a1"> <id column = "pid" property = "pid" /> <result column = "pname" property = "pname" /> <result column = "page" property = "page" /> <result column = "psex" propert <collection property = "adder" oftype = "adder" select = "fingcard_adder" column = "pid"> </collection> </sroperedmap> <select id = "selectpersonandcardandadderlazyBypID(2) طريقة تعريف واجهة Mapper:
1. هنا استعلام يرسل فقط معلومات الشخص ؛
test public void testselectpersonandcardandadderlazybypid () {// policy lazy شخص واحد إلى شخص p = pm.selectpersonAndCardAdderLazyBypid (1) ؛ system.out.println (p.getPname ()+"،") ؛ //// هنا استعلام يرسل فقط معلومات الشخص}بيان استعلام تنفيذ النتيجة:
2. هنا استعلام لإصدار معلومات الشخص ومعلومات الهوية ؛
test public void testselectpersonandcardandadderlazybypid () {// policy lazy شخص واحد إلى شخص p = pm.selectpersonAndCardAdderLazyBypid (1) ؛ System.out.println (p.getPname ()+"،") ؛ // هنا استعلام ينبعث منه سوى معلومات الشخص ؛ System.out.println (p.getPname ()+"،"+p.getCard (). }بيان استعلام تنفيذ النتيجة:
3. يتم إصدار معلومات الشخص ومعلومات الهوية ومعلومات العنوان هنا ؛
test public void testselectpersonandcardandadderlazybypid () {// policy lazy شخص واحد إلى شخص p = pm.selectpersonAndCardAdderLazyBypid (1) ؛ System.out.println (p.getPname ()+"،") ؛ // هذا استعلام ينبعث منه سوى معلومات الشخص ؛ System.out.println (p.getPname ()+"،"+p.getCard (). getCnum ()) ؛ // هذا استعلام ينبعث من معلومات الشخص ومعلومات الهوية ؛ //system.out.println(p.getPname ()+"،"+p.getCard (). getCnum ()) ؛ لـ (Adder Adder: P.GetAdder ()) {///// الاستعلام عن معلومات الشخص ومعلومات الهوية ومعلومات العنوان يتم إصدارها هنا ؛ system.out.println (adder.getashi ()) ؛ }} بيان استعلام تنفيذ النتيجة:
لخص
ما سبق هو طريقة تأخير تحميل الإستراتيجية البطيئة في MyBatis المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، يرجى ترك رسالة لي. سوف يرد المحرر إليك في الوقت المناسب!