ما هي خصائص mybatis-plus
1. توليد الكود 2. المنشئ الشرطي
بالنسبة لي ، الغرض الرئيسي هو استخدام البناء الشرطي القوي.
خطوات سريعة للاستخدام:
1. أضف تبعيات ملف POM
<Rependency> <roupend> org.apache.velocity </rougiD> <StifactId> السرعة </artifactid> <الإصدار> 1.7 </version> </sependency> <sependency>
ملاحظة: ستحافظ MyBatis-Plus تلقائيًا على تبعيات MyBatis و MyBatis-Spring ، لذلك ليست هناك حاجة لتقديم الأخيرين لتجنب النزاعات في الإصدار.
2. تعديل ملف التكوين
ما عليك سوى استبدال mybatis 'sqlsessionfactory مع mybatis-plus. MyBatis-plus لا يفعل بعض الامتدادات الوظيفية فقط:
<bean id = "sqlsessionfactory"> <property name = "datasource" ref = "datasource"/> <!-المسح التلقائي لملف mapping.xml-> <property name = "mapperlocations" value = "classPath: myBatis/*/*. <property name = "typealiasespackage" value = "com.baomidou.springmvc.model.*"/> <property name = "plugins"> <array> <!-Paging Plagin Configuration-> <bean id = "paginationInterceptor"> <property name = "dialecttype" value = <property name = "GlobalConfig" ref = "GlobalConfig" /> </bean>
في التكوين أعلاه ، بالإضافة إلى التكوين المنتظم لـ MyBatis ، هناك تكوين إضافي وتكوين عالمي لترقيم الصفحات. يوفر MyBatis-Plus استخدامًا مناسبًا للغاية لترقيم الصفحات ، وهناك أيضًا تكوين عالمي على النحو التالي:
<bean id = "globalConfig"> <!-auto-> 0` ("قاعدة البيانات معرف الذاتية") input-> `1` (معرف إدخال المستخدم") id_worker-> `2` (" المعرف الفريد العالمي ") uuid->` `` `` id id id ")-> <idtype" oracle-> `oracle` db2->` db2` h2-> `h2` hsql->` hsql` sqlite-> `sqlite` postgre->` postgresql` sqlserver2005- هذا العنصر-> <!-<property name = "dbtype" value = "Oracle" />-> <!-TRIWE GLOBAR TRUE for UnderScore name-> <property name = "dbColumnAnderline" value = "true" /> </bean>في هذه المرحلة ، حتى إذا تم الانتهاء من عمل التكوين ، فلنستخدم مثالًا بسيطًا لتجربة استخدامه.
1. إنشاء جدول مستخدم جديد:
TablEname ("user") مستخدم الفئة العامة ينفذ مسلسل { / ** معرف المستخدم* / المعرف الطويل الخاص ؛ / ** اسم المستخدم*/ اسم السلسلة الخاصة ؛ / ** عصر المستخدم*/ عصر عدد صحيح خاص ؛ @tablefield (الوجود = خطأ) حالة سلسلة خاصة ؛}هناك اثنين من التعليقات التوضيحية لتلاحظ هنا. الأول هو tablename ("المستخدم") ، والذي يحدد الارتباط بجدول قاعدة البيانات. يعني التعليقات التوضيحية هنا أنه يجب أن يكون هناك جدول اسمه مستخدم في قاعدة البيانات الخاصة بك المقابلة له ، ويجب أن يكون اسم عمود جدول البيانات هو سمات فئة المستخدم. بالنسبة للسمات الموجودة في فئة المستخدم ولكن ليس لديها في جدول المستخدم ، يلزم وجود توضيحي ثانٍ (موجود = خطأ) لاستبعاد السمات في فئة المستخدم.
2. قم بإنشاء واجهة داو طبقة جديدة usermapper:
/*** واجهة طبقة قاعدة بيانات جدول المستخدم*/الواجهة العامة usermapper تمتد basemapper <Sether> {select ("SelectUserList") القائمة <Seter> selecterList (صفحة التراجع ، حالة السلسلة) ؛}تحتاج واجهة DAO إلى تطبيق Basemapper ، بحيث يمكن استخدام العديد من الطرق المغلفة. بالإضافة إلى ذلك ، يمكنك أيضًا كتابة أساليب بنفسك. يشير التعليق التوضيحي @SELECT إلى ملف USERMAPPER المشار إليه من الخطوة الثالثة.
3. قم بإنشاء ملف تكوين usermapper جديد:
<؟ مساحة الاسم = "com.baomidou.springmvc.mapper.system.usermapper"> <!-عمود نتائج الاستعلام العامة-> <sql id = "base_column_list"> معرف ، الاسم ، العمر </sql> <select id = "selecterlist" resulttype = "user"
4. قم بإنشاء خدمة فئة جديدة للخدمة:
/** * * * فئة تطبيق واجهة بيانات جدول بيانات المستخدم * */@servicepublic class uservisevice يمتد serviceImpl <UserMapper ، user> {public page <Seter> SelectUserPage (صفحة <Seter> الصفحة ، الحالة السلسلة) صفحة العودة ؛ }}يرث المستخدمون sterviservice فئة ServiceImpl. MyBatis-plus يضخ usermapper فينا بهذه الطريقة. وبهذه الطريقة ، يمكننا استخدام العديد من الأساليب التي توفرها طبقة الخدمة افتراضيًا ، ويمكننا أيضًا استدعاء الأساليب التي نكتبها في طبقة DAO لتشغيل قاعدة البيانات. فئة الصفحة هي نموذج يوفر MyBatis-Plus وظيفة ترقيم ترقيم الصفحات ، ويرث ترقيم الصفحات ، لذلك لا نحتاج إلى كتابة فصل آخر في صفحة ، فقط استخدمها مباشرة.
5. إنشاء طبقة تحكم جديدة USERCONTROLLER
ControllerPublic Class USERCONTROLLER يمتد BaseController {autowired private iuserservice uservice ؛ ResponseBodyReQuestMapping ("/page") الكائن العام SelectPage (نموذج النموذج) {page page = page new (1،10) ؛ page = userService.SelectUserPage (صفحة ، "Normal") ؛ صفحة العودة ؛ }ما سبق يكمل وظيفة أساسية. دعونا نلقي نظرة على منشئه المشروط.
منشئ مشروط لـ MyBatis-Plus
أولاً ، دعونا نلقي نظرة على التطبيق البسيط والعملي لمثيل البناء الشرطي.
اختبار void العام () {entityWrapper ew = new entityWrapper () ؛ ew.setentity (مستخدم جديد ()) ؛ اسم السلسلة = "وانغ" ؛ العمر الصحيح = 16 ؛ ew.where ("name = {0}" ، name) .andnew ("Age> {0}" ، Age) .orderby ("Age") ؛ قائمة <Sether> list = userService.SelectList (EW) ؛ Page Page2 = userService.selectPage (صفحة ، EW) ؛ }هنا ، يتم استخدام EntityWrapper من فئة التفاف الشرطية لتجميع عبارات SQL. من السهل فهم المبدأ أيضًا. في الكود أعلاه ، تتمثل نتيجة استعلام القائمة الأولى في الاستعلام عن جميع السجلات في قاعدة البيانات مع Name = Wang و Age> 16 عامًا وفرزها وفقًا للعمر. الاستعلام الثاني هو إضافة وظيفة ترقيم أخرى.
في الأساس ، يمكن أن يؤدي استخدام EntityWrapper ببساطة إلى إكمال بعض الاستعلامات المشروطة ، ولكن إذا تم استخدام طريقة الاستعلام بشكل متكرر ، فمن المستحسن كتابتها في UserMapper بنفسك.
فهل يمكن أن تستخدم طريقة Mapper المخصصة EntityWrapper؟ بالطبع ، من الممكن أيضًا.
ويرد مثال على ذلك في الوثائق.
1. التعريف في MapPper:
قائمة <Sether> selectMypage (RowBounds Rowbounds ، param ("EW") WRAPPER <T> WRAPPER) ؛
2. تعريف في ملف mapper:
<حدد ID = "selectmypage" resultType = "User"> حدد * من المستخدم $ {ew.sqlsegress} </rection>بالنسبة للربط الشرطي لـ intitymapper ، يمكننا تنفيذ بشكل أساسي حيث ، أو ، أو GroupBy ، Orderby وغيرها من بناء الجملة الشائع في SQL ، ويمكن الجمع بين طرق البناء المحددة بمرونة.
testpublic void testtsql11 () { / * * الكيان مع إخراج طريقة استخدام الاستعلام لرؤية النتيجة * / ew.setentity (مستخدم جديد (1)) ؛ ew.where ("name = {0}" ، "Zhangsan '"). و ("id = 1") .ornew ("الحالة = {0}" ، "0") .andnew ("pwd = 11"). isnotnull ("n1 ، n2"). isnull ("n3") .groupby ("x1"). groupby ("x2 ، x3") .having ("x1 = 11"). System.out.println (ew.getsqlsegment ()) ؛}المستندات المرجعية
MyBaits-plus الوثائق الرسمية
لخص
ما سبق هو البرنامج التعليمي السريع للمقدمة لأداة MyBatis Plus التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فالرجاء ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب!