برنامج تعليمي ArticLemyBatis السابق التعلم (I) - في بداية MyBatis السريعة ، تحدثنا عن كيفية استخدام MyBatis للاستعلام عن البيانات في جدول المستخدمين ، وهي مقدمة أولية لـ MyBatis. اليوم ، سنشرح كيفية استخدام MyBatis لأداء عمليات CRUD على جدول المستخدمين. قبل أن تذهب إلى الموضوع ، سأضيف بعض المعرفة الأساسية حول MyBatis و Crud.
ما هو mybatis؟
MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC والمعلمات تقريبًا والبحث عن مجموعات النتائج. يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي لتعيين واجهات و Pojos (كائنات Java القديمة العادية) في سجلات في قاعدة البيانات.
MyBatis Download: https://github.com/mybatis/mybatis-3/releases
crud يعني
يشير Crud إلى اختصار الحروف الأولى من عدة كلمات عند إجراء معالجة الحساب. يستخدم بشكل أساسي لوصف الوظائف التشغيلية الأساسية لقاعدة البيانات أو طبقة الثبات في أنظمة البرمجيات.
عند الذهاب إلى هذه النقطة ، فإن بيئة الاختبار المستخدمة في هذه المقالة هي بيئة الاختبار في المقالة السابقة.
1. استخدم myBatis لأداء عمليات CRUD على الجداول - التنفيذ المستند إلى XML
1. تحديد ملف رسم الخرائط SQL
محتويات ملف usermapper.xml هي كما يلي:
<؟ xml الإصدار = "." الترميز = "utf-"؟> <! Doctype Mapper Public "-// mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis--mapper.dtd"><!-حدد اسمًا فريدًا لهذه الرحم. يتم تعيين قيمة مساحة الاسم بشكل تقليدي على اسم ملف خريطة SQL ، بحيث يمكن ضمان أن تكون قيمة مساحة الاسم فريدة من نوعها. For example, namespace="me.gacl.mapping.userMapper" is me.gacl.mapping (package name) + userMapper (userMapper.xml file removal suffix)--><mapper namespace="me.gacl.mapping.userMapper"><!-- Write a query SQL statement in the select tag, set the id attribute of the select tag to getUser, the id attribute value must be فريدة من نوعها ، ولا يمكن إعادة استخدام سمة المعلمة للإشارة إلى نوع المعلمة المستخدم في الاستعلام. تشير سمة resultType إلى نوع مجموعة النتائج الذي تم إرجاعه بواسطة Query ResultType = "me.gacl.domain.user" يعني تغليف نتيجة الاستعلام في كائن من فئة المستخدم إلى فئة المستخدم ، وهو فئة الكيان المقابلة لجدول المستخدمين-> <! resultType = "me.gacl.domain.user"> حدد * من المستخدمين حيث id =#{id} </select> <!-إنشاء مستخدم (إنشاء)-> <insert id = "adduser" parametertype = "me.gacl.domain.user"> insert in user (name ، ens) {name} ، -> <delete id = "deleteuser" parametertype = "int"> delete من المستخدمين حيث id =#{id} </delete> <!-تعديل المستخدم (تحديث)-> <update id = "updateUser" parametertype = "me.gacl.domain.user" الاستعلام عن جميع المستخدمين-> <حدد ID = "getAllusers" resultType = "me.gacl.domain.user"> حدد * من المستخدمين </select> </mapper> رمز فئة اختبار الوحدة كما يلي:
package me.gacl.test ؛ import java.util.list ؛ import me.gacl.domain.user ؛ import me.gacl.util.mybatisutil ؛ import org.apache.ibatis.session.sqlsession ؛ sqlsession = mybatisutil.getsqlsession (false) ؛ sqlsession sqlsession = mybatisutil.getsqlsession (true) ؛/*** MAP SQL IDENTIMENT علامة. من خلال قيمة سمة المعرف لعلامة إدراج ، يمكنك العثور على SQL المراد تنفيذه*/string state = "me.gacl.mapping.usermapper.adduser" ؛ sqlsession.insert (بيان ، مستخدم) ؛ // إرسال يدويًا معاملات // sqlsession.commit () ؛ // بعد تنفيذ SQL مع SQLSession ، تحتاج إلى إغلاق sqlsessionsqlsession.close () ؛ system.out.println (retresult) ؛}@testpublic void testupdate () {sqlsession sqlsession = mybatisutil.getsqlsession (true) ؛/*** map sql string في updateStiped ، قيمة السمة لعلامة التحديث. يمكن العثور على SQL المراد تنفيذه من خلال قيمة سمة المعرف لعلامة التحديث. */string state = "me.gacl.mapping.usermapper.updateuser" ؛ // mapping sql id string user = new user () ؛ user.setId () ؛ user.setName ("lonely canglang") ؛ user.setage () ؛ لإغلاق sqlsession.close () ؛ system.out.println (retresult) ؛}@testpublic void testDelete () {sqlsession sqlsession = mybatisutil.getsqlSession (true) ؛ ملف usermapper.xml ، * deleteuser هي قيمة سمة المعرف لعلامة الحذف. يمكن العثور على SQL المراد تنفيذه من خلال قيمة سمة المعرف لعلامة الحذف*/string strup sqlsessionsqlsession.close () ؛ system.out.println (retresult) ؛}@testpublic void testgetall () {sqlsession sqlsession = mybatisutil.getsqlsession () ملف usermapper.xml ، * getAllusers هي قيمة سمة المعرف لعلامة تحديد. من خلال قيمة سمة المعرف الخاصة بعلامة SELECT ، يمكنك العثور على SQL المراد تنفيذه*/سلسلة عبارة سيتم تنفيذها = "me.gacl.mapping.usermapper.getAllusers" ؛ تنفيذ SQL ، تحتاج إلى إغلاق sqlsessionsqlsession.close () ؛ system.out.println (lstusers) ؛}} 2. استخدم MyBatis لأداء عمليات CRUD على الجداول - التنفيذ القائم على التعليقات التوضيحية
1. تحديد الواجهة لرسم خرائط SQL
رمز واجهة usermapperi كما يلي:
package me.gacl.mapping ؛ import java.util.list ؛ import me.gacl.domain.user ؛ import org.apache.ibatis.annotations.delete ؛ import org.apache.ibatis.annotations.Intert ؛ import org.apache.ibatis.annotations.select ؛ حدد الواجهة الخاصة برسم خرائط SQL ، حدد SQL المراد تنفيذه باستخدام التعليقات التوضيحية*/الواجهة العامة usermapperi {// استخدم التعليقات المتعلقة بـ @insert للإشارة إلى SQL المراد تنفيذها بواسطة method method @insert ("insert in insert (name ، en). يتم تنفيذ SQL بواسطة طريقة deletebyid@delete ("حذف من المستخدمين حيث id =#{id}") public int deletebyid (int id) ؛ // استخدم التعليق التوضيحي@update لتحديد SQL المراد تنفيذه بواسطة update exparte@update ("update set name =#{name} ، age = ate} ex} ex} exed = @SELECT التعليق التوضيحي لتحديد SQL المراد تنفيذه بواسطة طريقة getByID @select * من المستخدمين حيث id =#{id} ") المستخدم العام getById (int id) ؛ // استخدم التعليق التوضيحي @SELECT لتحديد SQL المراد تنفيذه بواسطة طريقة getall @select (" حدد * من المستخدمين ") تجدر الإشارة إلى أننا لسنا بحاجة إلى كتابة رمز فئة تنفيذ محدد لواجهة UserMapperi. يتم إنشاء فئة التنفيذ المحددة هذه بشكل ديناميكي بواسطة MyBatis ، ونحن بحاجة فقط إلى استخدامه مباشرة.
2. سجل واجهة التعيين هذه في ملف conf.xml
<؟ xml الإصدار = "." الترميز = "utf-"؟> <! conctionpe configuration public "-// mybatis.org//dtd config .//en" "http://mybatis.org/dtd/mybatis-config.dtd"><configuration> default = /> <!-تكوين معلومات اتصال قاعدة البيانات-> <dataSource type = "proted"> <property name = "driver" value = "com.mysql.jdbc.driver" /> <property name = "url" value = "jdbc: mysql: // localhost: /mybatis" /> /> </dataSource> </visply> </eversionments> <mappers> <!- قم بتسجيل ملف usermapper.xml. يقع usermapper.xml في الحزمة me.gacl.mapping ، لذلك يتم كتابة المورد كأني/gacl/mapping/usermapper.xml-> <mapper resource = "me/gacl/mapping/usermapper.xml"/>!
رمز فئة اختبار الوحدة كما يلي:
package me.gacl.test ؛ import java.util.list ؛ import me.gacl.domain.user ؛ import me.gacl.mapping.usermapperi ؛ import me.gacl.til.mybatisutil ؛ import org.apache.ibatis.squessess TESTADD () {sqlsession sqlsession = mybatisutil.getsqlsession (true) ؛ // احصل على كائن فئة التنفيذ لواجهة UserMapperi. يتم بناء كائن فئة التنفيذ لواجهة UserMapperi ديناميكيًا بواسطة sqlsession.getMapper (usermapperi.class). usermapperi mapper = sqlsession.getMapper (usermapperi.class) ؛ مستخدم المستخدم = مستخدم جديد () ؛ user.setName ("userxdp") ؛ user.setage () system.out.println (add) ؛}@testpublic void testupdate () {sqlsession sqlsession = mybatisutil.getsqlsession (true) ؛ // الحصول على كائن فئة التنفيذ لواجهة UserMapperi. يتم بناء كائن فئة التنفيذ لواجهة UserMapperi ديناميكيًا بواسطة sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class) ؛ مستخدم المستخدم = مستخدم جديد () ؛ المستخدم. TestDelete () {sqlsession sqlsession = mybatisutil.getsqlsession (true) ؛ // احصل على كائن فئة التنفيذ لواجهة UserMapperi. يتم إنشاء كائن فئة التنفيذ لواجهة UserMapperi ديناميكيًا بواسطة sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class) ؛ sqlsessionsqlsession.close () ؛ system.out.println (retresult) ؛}@testpublic void testgetuser () {sqlsession sqlsession = mybatisutil.getsqlsession () ؛ // الحصول على كائن فئة التنفيذ لواجهة UserMapperi. يتم بناء كائن فئة التنفيذ لواجهة UserMapperi ديناميكيًا بواسطة sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class) ؛ // تنفيذ عمليات الاستعلام وترسيخ نتائج التعبير تلقائيًا إلى مستخدم مستخدم مستخدم = mapper.getign () SQL ، تحتاج إلى إغلاق sqlsessionsqlsession.close () ؛ System.out.println (user) ؛}@testpublic void testgetall () {sqlsession sqlsession = mybatisutil.getsqlsession () ؛ // الحصول على كائن فئة التنفيذ لواجهة usermapperi. يتم بناء كائن فئة التنفيذ لواجهة usermapperi ديناميكيًا بواسطة sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class) ؛ SQL باستخدام SQLSession ، تحتاج إلى إغلاق sqlsessionsqlsession.close () ؛ system.out.println (lstusers) ؛}} رمز فئة أدوات MyBatisutil المستخدم هو كما يلي:
package me.gacl.util ؛ استيراد java.io.inputstream ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory myBatisutil {/*** الحصول على sqlsessionfactory*return sqlsessionfactory*/public static sqlsessionfactory getSqlSessionFactory () {string resource = "conf.xml" ؛ inputStream is = myBatisutil.class.getClassLoader (). sqlsessionfactorybuilder (). build (IS) ؛ Return Factory ؛}/*** الحصول على sqlsession* @return sqlsession*/public static sqlsession getSqlSession () {return getSqlSessionFactory (). ارتكاب المعاملة بعد تنفيذ SQL* يشير FALSE إلى أن كائن SQLSession الذي تم إنشاؤه لن يرتكب المعاملة تلقائيًا بعد تنفيذ SQL. في هذا الوقت ، نحتاج إلى استدعاء sqlsession.commit () يدويًا لتقديم المعاملة* @sqlsession*/sqlsession getsqlsession (isautocommit المنطقية)تم اختبار جميع الرموز ذات الصلة أعلاه ويمكن للجميع استخدامها بثقة!
ما ورد أعلاه هو برنامج MyBatis Learning Tutorial الذي قدمه لك المحرر (II) - كيفية استخدام MyBatis لأداء عمليات CRUD على جدول المستخدمين. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!