يقال إنه أفضل استخدام ، إنه بالتأكيد ليس مزحة ، لكن الكثير من الناس لا يفهمون سبب استخدامهم لهذا البرنامج المساعد. ليس من الجيد استخدام SQL عن طريق الكتابة اليدوية وتوصل إلى ترقيم SQL ...
لذلك كتبت بشكل خاص مثالًا كهذا لشرح سبب كونه الأفضل.
لنفترض أننا كتبنا واجهة Mapper و XML ، على النحو التالي:
الواجهة العامة sysloginlogmapper { / ** * Query سجل تسجيل الدخول استنادًا إلى شروط الاستعلام * param logip * param username * param logindate * @param exitdate * @return * / list <SysLoginLog> findsysysloginlog (param ("logip") string logip ، param ("logindate") سلسلة logindate ، param ("exitdate") سلسلة exitdate ، param ("logerR") string logerr) ؛ } <؟ المساحة الاسم = "com.easternie.sys.dao.sysloginlogmapper"> <select id = "findSysloginLog" resultType = "com.easternie.sys.vo.model.sysloginlog"> select * from sys_login_log a < على A.UserId = b.userId </frice> <where> <if test = "logip! = null and logip! = ''"> a.logip like '٪' ||#{logip} || '٪' </if> </username! = null and username! = '' '"> و b.username like' ٪ ' '٪' ||#{username} || '٪') </if> <if test = "logindate! = null and logindate! = ''"> و to_date (substr (A.Logindate ، 0،10) ، 'yyyy-mm-dd') = to_date (#{logindate} ، 'yyyy-mm-dd') test = "exitdate! = null و exitdate! = ''"> و to_date (substr (A.ExitDate ، 0،10) ، 'Yyyy-mm-dd') = to_date (#{exitdate} ، 'yyyy-mm-dd') </if> if = '٪' ||#{logerr} || '٪' </if> </where> order by logid desc </select> </mapper>على الرغم من أنه مثال بسيط ، فإن XML هنا ليس بهذه البساطة.
إذا كان لديك بالفعل بعض أساليب MyBatis الجاهزة مثل ما سبق ، وأريد أن أتعامل مع هذا الاستعلام الآن ، فماذا أفعل؟
إذا كانت SQL مكتوبة بخط اليد ، فأنا بحاجة إلى إضافة واجهتين ، والاستعلام عن العدد الكلي ، والآخر تغيير إلى ترقيم الصفحات. لا يبدو من الصعب نسخ ولصق في XML ، ثم تغيير البيان. هل فعلت هذا؟
إذا كنت تستخدم هذا البرنامج المساعد ، فماذا أحتاج إلى فعله؟ ؟ ؟
لهذه الطرق التي كتبها MyBatis ، لست بحاجة إلى تغيير أي شيء.
ولكن قد تحتاج طبقة الخدمة إلى نقلها. مثال محدد أعلاه. انظر إلى رمز الاتصال طبقة الخدمة أدناه.
الكود عندما يكون الترحيل غير مطلوب:
القائمة العامة <SysLoginLog> FindSysLoginLog (تسجيل الدخول إلى سلسلة ، اسم مستخدم السلسلة ، Logindate ، سلسلة خروج السلسلة ، تسجيل السلسلة) يلقي BusinessException {return sysloginlogmapper.findsysloginlog (loginip ، username ، logindate ، exitdate ، loger) ؛ } رمز بعد إضافة وظيفة الترحيل:
public pagehelper.page <SysLoginLog> FindSysLoginLog (تسجيل الدخول إلى سلسلة ، اسم مستخدم السلسلة ، Logindate سلسلة ، سلسلة خروج ، سلسلة logerr ، int pagenumber ، int pagesize) يلقي businessException {pagehelper.startPage (pagenumber ، pagesize) ؛ sysloginlogmapper.findsysloginlog (loginip ، اسم المستخدم ، logindate ، exitdate ، logerr) ؛ إرجاع pagehelper.endpage () ؛ } بالمقارنة:
تم تغيير قيمة الإرجاع من القائمة <SysLoginLog> إلى pagehelper.page <SysLoginLog>
تمت إضافة معلمتين ، Pagenumber و Pagesize
ثم في رمز العملية ، يطلق عليه أولاً
pagehelper.startPage (pagenumber ، pagesize) ؛
يخبر Partpage المعترض أنني سأبدأ الترحيل. المعلمات المليئة هاتين هاتين.
ثم اتصل برمز MyBatis الأصلي:
sysloginlogmapper.findsysloginlog (loginip ، اسم المستخدم ، logindate ، exitdate ، logerr) ؛
هل من الغريب أنه لا توجد قيمة إرجاع مستلمة هنا؟ في الواقع ، استلم Pagehelper قيمة الإرجاع تلقائيًا. يمكن استرداد قيمة الإرجاع من خلال الكود التالي:
pagehelper.endpage () ؛
في الوقت نفسه ، أخبرت PENTPAGE Interceptor أنني قد أنهيت الترحيل ولم أعد بحاجة إليك.
هل تعتقد أن مثل هذا الرمز بسيط أو مكتوبة بخط اليد SQL بسيط؟
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.