Java API
الآن بعد أن عرفت كيفية تكوين MyBatis وإنشاء ملفات رسم الخرائط ، فأنت مستعد لتحسين مهاراتك. MyBatis 'Java API هي المكان الذي بذلته الجهود التي بذلتها. كما سترى ، مقارنة بـ JDBC ، يقوم MyBatis بتبسيط الكود الخاص بك بشكل كبير ويبقيه بسيطًا وسهل الفهم والمحافظة عليه. قدم MyBatis 3 العديد من التحسينات المهمة لجعل رسم الخرائط SQL أفضل.
تم تصميم MyBatis 3 على واجهة برمجة تطبيقات تكوين Java شاملة وقوية. API التكوين هذا هو أساس تكوين MyBatis المستند إلى XML وهو أيضًا أساس التكوين الجديد القائم على التعليقات التوضيحية.
توفر التعليقات التوضيحية طريقة بسيطة لتنفيذ بيانات رسم الخرائط البسيطة دون تقديم الكثير من النفقات العامة.
يتم عرض الأهداف والملصقات المقابلة من التعليقات التوضيحية المشتركة في الجدول:
| التعليقات التوضيحية | هدف | علامات XML المقابلة |
| cachenamespace | عطوف | <cache> |
| cachenamespaceref | عطوف | <cacheref> |
| @نتائج | طريقة | <drectedMap> |
| @نتيجة | طريقة | <النتيجة> <id> |
| @واحد | طريقة | <Assikening> |
| @كثير | طريقة | <roucky> |
@insert @تحديث @يمسح | طريقة | <SERT> <uptuday> <delete> |
insertProvider @updateprovider deleteprovider @selectprovider | طريقة | <SERT> <uptuday> <delete> <select> يسمح بإنشاء SQL الديناميكي |
| param | المعلمة | ن/أ |
| @خيارات | طريقة | خصائص بيانات التعيين |
| @يختار | طريقة | <select> |
معنى التعليقات التوضيحية المشتركة لـ MyBatis:
cachenamespace (الحجم = 512): يحدد استخدام ذاكرة التخزين المؤقت المدمجة داخل مساحة الاسم هذه
@options (usecache = true ، flushcache = false ، timeout = 10000): خيار التبديل لبعض الاستعلامات
Param ("ID"): الاسم المستعار المؤهل عالميًا ، لم يعد موضع معلمات الاستعلام في عبارة SQL في شكل 0 ، 1 ، 2 ، 3 ... ، المشتركين المتسلسل ، ولكن الاسم المقابل ، والذي يتم تعريفه هنا.
Results هي صفيف مع Result كعنصر. يمثل Result علاقة رسم الخرائط لحقل سمة واحد. المعرف = صحيح يعني أن حقل المعرف هو المفتاح الأساسي. سوف يعطي MyBatis تحسينات ضرورية أثناء الاستعلام. تشكل جميع عمليات الرسم في الصفيف علاقة رسم خرائط لسجل واحد ، في حين أن Results هي مجموعة من سجل واحد. بالإضافة إلى ذلك ، هناك تعليق توضيحي مهم للغاية resultMap ، يشبه Results
@SELECT ("بيان الاستعلام") ، @insert ("إضافة عبارة) ، update (" بيان التحديث ") و delete (" حذف بيان ") يمثلون عمليات للاستعلام وإضافة وتحديث وحذف البيانات.
بعد ذلك ، دعونا نلقي نظرة على استخدام التعليقات التوضيحية.
(1) استخدام التعليقات التوضيحية العادية (لا توجد عمليات خريطة مخصصة مطلوبة):
مثال 1
// أضف مؤلف @insert ("insertinto uplut (اسم المستخدم ، كلمة المرور ، البريد الإلكتروني ، العنوان ، الهاتف ، الهاتف)" +"القيم (#{username} ،#{password} ،#{email} ،#{address} ،#{phone})") مؤلف)؛ // حذف uptordelete ("deletefrom uptor where id = #{id}")@Options (flushCache = false ، timeout = 10000) public voiddeleteauthor (param ("id") int id) ؛ نصيحة: تحتاج إلى تسجيل Mapper قبل الاتصال بالطريقة:
SessionFactory.getConfiguration (). addMapper (testInteger.class) ؛
أو تكوين <Mapper> </papper> في mapper.xml
بعد التسجيل ، احصل على واجهة Mapper للاتصال بشكل طبيعي
(2) إذا كنت بحاجة إلى تخصيص الخريطة ، فيمكنك استخدام شرح النتائج:
مثال 2
// Query جميع معلومات المؤلف @select ("SELECT * من المؤلف") @خيارات (flushcache = false ، timeout = 10000 ، usecache = true) results (value = { @id = true ، column = "id" ، property = "id") ، result (property = "username" ، column = "username") result (property = "البريد الإلكتروني" ، العمود = "البريد الإلكتروني") ، result (property = "العنوان" ، العمود = "العنوان") ، result (property = "phone" = 10000 ، usecache = true) results (value = {result (id = true ، column = "id" ، property = "id") ، result (property = "username" ، column = "username") ، @result (property = "password" ، colude = "password") ، result (propert Result (property = "phone" ، column = "phone")}) المؤلف العام findauthorbyid (param ("id") intid) ؛ إذا كان بنية مجموعة النتائج التي يتم إرجاعها بواسطة استفسارات متعددة هي نفسها ، فيمكنك استخدام ResultMap لتحديد بنية العودة. باستخدام هذا التعليق التوضيحي ، سيتعين عليك تكوين ResultMap في ملف التعيين الخاص بك. ResultMap (value = "name") هو معرف ResultMap في ملف التعيين. وبهذه الطريقة ، تحتاج إلى تسجيل ملف التكوين الخاص بك في <mapper> واستخدام ResultMap في الواجهة للإشارة إلى معرف ResultMap في ملف التكوين كما يلي:
مثال 3
SelfMapper.xml
.
selfmapper.java:
@select ("Select A.ID ، B.Name ، C.State from ............")@resultmap (value = "selfmap") قائمة عامة <hashmap> sel () ؛ // لاحظ أن مجموعة القائمة التي تم إرجاعها قضية كاملة
رمز الواجهة
حزمة com.obtk.dao ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.annotations.insert ؛ استيراد org.apache.ibatis.annotations.options ؛ استيراد org.apache.ibatis.annotations.Results ؛ استيراد org.apache.ibatis.annotations.Results ؛ استيراد org.apache.ibatis.annotations.select ؛ استيراد com.obtk.entitys.studententity ؛ الواجهة العامة istudentdao { @insert ("أدخل في الطالب (الصاعقة ، الجنس ، العمر ، العمر ، العنوان ، deptidd)"+ "القيم (#{und} ،#{الجنس} ،#{Age} ،#{address} ،#{deptid})") @options (usegeneratedKeys = true ، ستو) ؛ select ("حدد * من الطالب حيث يتم تكوين stuid =#{stuid}") results (// طالما أن قيمة الخاصية غير متسقة مع اسم العمود تم تكوينها ، value = {result (column = "الجنس" ، property = "sex")}) QueryByid (integer stuid) ؛ select ("SELECT * من الطالب حيث الجنس =#{qqq} والعنوان =#{area}") results (// طالما أن قيمة خاصية التكوين = {result (column = "الجنس" ، property = "sex")}) قائمة <StudentEntity> QueryBymany (hashmap themap) ؛ // تكوين توضيح الجمعية العالمية @SELECT ("SELECT * من DETREM SENNER Inner Department D" +"على S.Deptidd = D.Deptid" +"حيث S.Gender =#{sex}" +"و D.DepartName =#{deptname}") قائمة <HashMap> QueryByqnn (hashmap) ؛ } القضية 1 الاستعلام عن كائن
حزمة com.obtk.test ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد com.obtk.dao.istudentdao ؛ استيراد com.obtk.entitys.studententity ؛ استيراد com.obtk.utils.mybatisutil ؛ الطبقة العامة annoselectone {public static void main (string [] args) {sqlsession session = null ؛ SQLSessionFactory Factory = null ؛ جرب {session = myBatisutil.getSession () ؛ المصنع = mybatisutil.getFactory () ؛ // ربط تكوين SQL في الواجهة مع File Configuration File Factory.getConfiguration (). addMapper (iStudentDao.class) ؛ iStudentDao studao = session.getMapper (iStudentDao.class) ؛ studententity stu = studao.querybyid (129) ؛ System.out.println (stu.getStuname ()+"،"+stu.getsex ()+"،"+stu.getaddress ()+"،"+stu.getStuid ()) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {mybatisutil.closesession () ؛ }}} الحالة 2 تمرر معلمات متعددة والاستعلام عن كائنات متعددة
حزمة com.obtk.test ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد com.obtk.dao.istudentdao ؛ استيراد com.obtk.entitys.studententity ؛ استيراد com.obtk.utils.mybatisutil ؛ الطبقة العامة annoselectmany {public static void main (string [] args) {sqlsession session = null ؛ SQLSessionFactory Factory = null ؛ جرب {session = myBatisutil.getSession () ؛ المصنع = mybatisutil.getFactory () ؛ // ربط تكوين SQL في الواجهة مع File Configuration File Factory.getConfiguration (). addMapper (iStudentDao.class) ؛ iStudentDao studao = session.getMapper (iStudentDao.class) ؛ hashmap parammap = new hashmap () ؛ parammap.put ("qqq" ، "ذكر") ؛ parammap.put ("المنطقة" ، "طالب عنبر") ؛ قائمة <Tudententity> stulist = studao.querybymany (parammap) ؛ من أجل (Studentity Stu: Stulist) {system.out.println (stu.getStuname ()+"،"+stu.getsex ()+"،"+stu.getaddress ()+"،" stu.getStuid ()) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {mybatisutil.closesession () ؛ }}} الحالة 3 إضافة كائن
حزمة com.obtk.test ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد com.obtk.dao.istudentdao ؛ استيراد com.obtk.entitys.studententity ؛ استيراد com.obtk.utils.mybatisutil ؛ الطبقة العامة annosavetest {public static void main (string [] args) {sqlsession session = null ؛ SQLSessionFactory Factory = null ؛ جرب {session = myBatisutil.getSession () ؛ المصنع = mybatisutil.getFactory () ؛ // ربط تكوين SQL في الواجهة مع File Configuration File Factory.getConfiguration (). addMapper (IstudentDao.class) ؛ iStudentDao studao = session.getMapper (iStudentDao.class) ؛ Studentity Stu = New Studententity ("Testc#" ، "Male" ، 21 ، "Pluto") ؛ Stu.SetDeptidd (10) ؛ int النتيجة = studao.saveone (stu) ؛ session.Commit () ؛ System.out.println ("حفظ بنجاح:"+stu.getStuid ()) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {mybatisutil.closesession () ؛ }}}الحالة 4 استخدم HashMap للاستعلام عن الجمعية
حزمة com.obtk.test ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد com.obtk.dao.istudentdao ؛ استيراد com.obtk.entitys.studententity ؛ استيراد com.obtk.utils.mybatisutil ؛ الطبقة العامة annojoinqnn {public static void main (string [] args) {sqlsession session = null ؛ SQLSessionFactory Factory = null ؛ حاول {// 4. الحصول على جلسة الجلسة = mybatisutil.getSession () ؛ المصنع = mybatisutil.getFactory () ؛ // ربط تكوين SQL في الواجهة مع File Configuration File Factory.getConfiguration (). addMapper (iStudentDao.class) ؛ iStudentDao studao = session.getMapper (iStudentDao.class) ؛ hashmap parammap = new hashmap () ؛ parammap.put ("الجنس" ، "ذكر") ؛ parammap.put ("deptname" ، "نظام الكمبيوتر") ؛ // 5. تنفيذ قائمة البيانات <HashMap> Stulist = studao.querybyqnn (parammap) ؛ لـ (hashmap theobj: stulist) {system.out.println (theobj.get ("stuid")+"،"+theobj.get ("الجنس")+"،"+theobj.get ("stuname")+"،"+theobj.get ("everavername")) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {mybatisutil.closesession () ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.