سيواجه معظم المطورين الذين يستخدمون MyBatis مشكلة ، وهي كتابة كمية كبيرة من SQL في ملف XML. بالإضافة إلى SQL من منطق الأعمال الخاصة ، هناك أيضًا عدد كبير من SQL مع هياكل مماثلة. علاوة على ذلك ، عندما يتغير بنية جدول قاعدة البيانات ، يجب تغيير جميع فئات SQL والكيان المقابلة. قد يكون تأثير عبء العمل والكفاءة هذا هو الحاجز بين المبرمجين وحذفهم وتعديلهم وفحصهم والمبرمجين الحقيقيين. في هذا الوقت ، جاء الخريطة العامة إلى الوجود ...
ما هو خريطة عالمية
General Mapper هو مكون إضافي يعتمد على MyBatis لحل مشكلة إضافة وحذف وتعديل وبحث الجداول المفردة. لا يحتاج المطورون إلى كتابة SQL أو إضافة طرق إلى DAO. طالما أنهم يكتبون فئة الكيان جيدًا ، يمكنهم دعم الطرق المقابلة لإضافة وحذف وتعديل والبحث.
كيفية استخدام
أخذ MySQL كمثال ، لنفترض أن هناك مثل هذا الجدول:
إنشاء جدول `test_table` (` id` bigint (20) وليس null auto_increment ، `name` varchar (255) افتراضي" ، "create_time`` dateTim `` is_delete` int (8) null ، المفتاح الأساسي (`id`)) المحرك = innodb auto_increment = 1 charset = utf8 ؛
المفتاح الأساسي هو المعرف ، الذي يزيد من تلقاء نفسه. فيما يلي جدول كمثال لتقديم كيفية استخدام خريطة عالمية.
تبعيات مافن
<!-General Mapper-> <reperency> <roupiD> tk.mybatis </groupId> <StifactId> mapper </artifactid> <sophy> 3.3.9 </version> </dependency>
تكوين springMVC
<!-General Mapper-> <Enlogclass = "tk.mybatis.spring.mapper.mapperscannerconfigurer"> <PerpertyName = "basePackage" value = "cn.com.bluemoon.bd.service.spider.dao </value> </property> </ban>
لاحظ أن tk.mybatis.spring.mapper.MapperScannerConfigure يستخدم هنا لاستبدال mybatis الأصلي org.mybatis.spring.mapper.MapperScannerConfigurer .
المعلمات المتاحة:
في معظم الحالات ، لن يتم استخدام هذه المعلمات ، ويمكنك دراستها بنفسك إذا كان لديك ظروف خاصة.
كيف تكتب الكيانات
تذكر مبدأ واحد: عدد الحقول في فئة الكيان> = عدد الحقول التي تحتاج إلى تشغيل في جدول قاعدة البيانات. بشكل افتراضي ، يتم تشغيل جميع الحقول في فئة الكيان كحقول في الجدول ، وإذا كانت هناك حقول إضافية ، فيجب إضافة شرح @Transient .
table (name = "test_table") الفئة العامة testTableVoImplements serializable {private static final long serialversionuid = 1L ؛ IDGeneratedValue (generator = "jdbc") private long id ؛ transient سلسلة userId الخاصة ؛ اسم السلسلة الخاصة ؛ الطابع الزمني الخاص الإبداعي ؛ سلسلة خاصة CreateUserId ؛ طابع زمني خاص updateTime ؛ سلسلة خاصة updateUserid ؛ عدد صحيح خاص isdelete. // حذف الحصول ، تعيين ...}يوضح:
كيف تكتب داو
في كتابة MyBatis التقليدية ، يجب ربط واجهة DAO بملف MAPPER ، أي أن SQL بحاجة إلى كتابة لتنفيذ الأساليب في واجهة DAO. بشكل عام ، يحتاج DAO فقط إلى ورث واجهة مشتركة للحصول على طرق غنية:
وراثة الخريطة العامة ، يجب تحديد الأدوية الجيرية
الواجهة العامة TestTableDaoCtends Mapper <StestTableVo> {}بمجرد أن ترث Mapper ، يحتوي الخريطة الموروثة على جميع الأساليب الشائعة لـ Mapper:
يختار
الطريقة: قائمة <T> SELECT (T Record) ؛
ملاحظة: الاستعلام بناءً على قيمة السمة في الكيان ، واستخدم علامات متساوية لظروف الاستعلام
الطريقة: T selectByprimaryKey (مفتاح الكائن) ؛
ملاحظة: الاستعلام بناءً على حقل المفتاح الأساسي. يجب أن تحتوي معلمات الأسلوب على سمات مفتاح أساسية كاملة. تستخدم ظروف الاستعلام علامات متساوية.
الطريقة: قائمة <T> selectall () ؛
ملاحظة: الاستعلام عن جميع النتائج ، يمكن أن تحقق طريقة SELECT (NULL) نفس التأثير
الطريقة: T SelectOne (T Record) ؛
ملاحظة: الاستعلام وفقًا للخصائص الموجودة في الكيان ، يمكن أن تكون هناك قيمة إرجاع واحدة فقط ، ويتم طرح نتائج متعددة. تستخدم ظروف الاستعلام علامات متساوية.
الطريقة: int selectCount (T Record) ؛
ملاحظة: الاستعلام عن العدد الإجمالي للسمات في الكيان ، واستخدم العلامة المتساوية لظروف الاستعلام.
أدخل
الطريقة: int insert (T record) ؛
ملاحظة: حفظ كيان ، سيتم أيضًا حفظ السمة الفارغة ، ولن يتم استخدام القيمة الافتراضية لقاعدة البيانات.
الطريقة: int insertSeertive (T Record) ؛
ملاحظة: حفظ كيان ، ولن يتم حفظ السمة الفارغة ، وسيتم استخدام القيمة الافتراضية لقاعدة البيانات.
تحديث
الطريقة: int updateByPrimaryKey (T Record) ؛
ملاحظة: قم بتحديث جميع حقول الكيان وفقًا للمفتاح الأساسي ، سيتم تحديث القيمة الفارغة
الطريقة: int updateByPrimaryKeySelective (T Record) ؛
الوصف: قم بتحديث القيمة التي لا تكون سمةها خالية وفقًا للمفتاح الأساسي
يمسح
الطريقة: int delete (t record) ؛
ملاحظة: حذف وفقًا لسمات الكيان كظروف ، استخدم علامات متساوية لظروف الاستعلام
الطريقة: int deleteByPrimaryKey (مفتاح الكائن) ؛
ملاحظة: حذف وفقًا لحقل المفتاح الأساسي ، يجب أن تحتوي معلمات الأسلوب على سمات مفتاح أساسي كامل
مثال طريقة
الطريقة: قائمة <T> selectByExample (مثال كائن) ؛
الوصف: استعلام وفقًا لشروط المثال
النقطة الرئيسية: يدعم هذا الاستعلام تحديد أعمدة الاستعلام من خلال فئة المثال وتحديد أعمدة الاستعلام من خلال طريقة SelectProperties.
الطريقة: int selectCountByexample (مثال كائن) ؛
الوصف: الاستعلام عن العدد الإجمالي وفقًا لشروط المثال
الطريقة: int updateByExample (param ("record") t record ، @param ("example") مثال الكائن) ؛
ملاحظة: تحديث جميع الخصائص الواردة في سجل الكيان وفقًا لشروط المثال ، وسيتم تحديث القيمة الفارغة.
الطريقة: int updateByExamplesEctive (param ("record") T record ، param ("example") مثال الكائن) ؛
الوصف: تحديث سجل الكيان وفقًا لمثال الشروط يحتوي على قيمة الخاصية غير فارغة
الطريقة: int deletebyexample (مثال كائن) ؛
الوصف: حذف البيانات وفقًا لشروط المثال
تستخدم في الكود
حقن DAO في الخدمة وهو جاهز للاستخدام.
autowiredprivate testtabledao testtabledao ؛
فيما يلي طريقة عامة للكتابة:
جديد
TestTablevo vo = new TestTableVo () ؛ // حذف خصائص الإعداد لـ VO ... int row = testTabledao.insertSelective (VO) ؛
يراجع
TestTablevo vo = new TestTableVo () ؛ // حذف خصائص الإعداد لـ VO ... int row = testtabledao.updateByPrimaryKeySelective (VO) ؛
الاستعلام عن واحد
TestTablevo vo = new TestTableVo () ؛ vo.setId (123l) ؛ testtablevo result = testTabledao.Selectone (VO) ؛
استعلام مشروط
// إنشاء مثال مثال على سبيل المثال = مثال جديد (testTableVo.class) ؛ // إنشاء معايير example.criteria معايير = مثال. createcriteria () ؛ // إضافة معايير الشرط.
لخص
مبدأ Mapper العام هو الحصول على معلومات فئات الكيانات من خلال التفكير وبناء SQL المقابل. لذلك ، نحتاج فقط إلى الحفاظ على فصول الكيان ، والتي توفر راحة كبيرة للتكيف مع الاحتياجات المعقدة والمتغيرة. الوصف أعلاه هو مجرد استخدام بسيط للخريطة العامة. في المشاريع الفعلية ، لا يزال يتعين علينا تغليف طريقة أكبر وأكثر عمومية وأفضل استخدامًا بناءً على الخريطة العامة بناءً على العمل.
مع تكوين الحذاء الربيعي
مافن
<!-MyBatis-> <reperency> <roupiD> org.mybatis.spring.boot </rougeid> <StifactId> mybatis-spring-boot-starter </stifactid> <splement> 1.3.1 </version> </dependency> <StifactId> mapper-spring-boot-starter </stifactid> <الإصدار> 1.1.4 </version> </reperence>
Application.Properties التكوين
#mapper#MAPPERS COMPA MAPPPER.MAPSER =
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.