مراجعة الاستخدام الأساسية:
يتم تخزين عبارات SQL في ملفات XML أو تعليقات Java. مثال على رسم خرائط mabatis (والذي يستخدم واجهة Java وشرح MyBatis):
حزمة org.mybatis.example ؛ واجهة عامة blogmapper {select ("حدد * من المدونة حيث id = #{id}") مدونة selectblog (int id) ؛}مثال على التنفيذ:
blogmapper mapper = session.getMapper (blogmapper.class) ؛ Blog blog = mapper.selectblog (101) ؛
يمكن أيضًا تحديد عبارات SQL والتعيينات إلى ملف XML:
<؟ <حدد ID = "selectblog" parametertype = "int" resultType = "blog"> حدد * من المدونة حيث id = #{id} </select> </papper>يمكنك أيضًا استخدام MyBatis API لتنفيذ البيانات:
مدونة المدونة = session.selectone ("org.mybatis.example.blogmapper.selectblog" ، 101) ؛للحصول على التفاصيل ، يرجى الرجوع إلى دليل المستخدم الذي يوفره موقع MyBatis.
دمج مع الربيع
يتكامل MyBatis مع إطار الربيع. يتيح Spring Framework MyBatis المشاركة في معاملات الربيع ، ويخلق مُرَّبات وجلسات MyBatis ، ويحققها في الفاصوليا الأخرى.
فيما يلي مثال تكوين XML الأساسي: يتم إنشاء Mapper وحقنها في Bean "Blogservice".
<bean id = "sqlsessionfactory"> <property name = "datasource" ref = "datasource" /> </bean> <bean id = "blogmapper"> <property name = "sqlsessionfactory" ref = "sqlsessionfactory" /> <property name = "value = id = "blogservice"> <property name = "blogmapper" ref = "blogmapper" /> </bean>
يتطلب الاتصال الآن MyBatis فقط بالاتصال بحبة واحدة:
الفئة العامة blogserviceimpl تنفذ blogservice {private blogmapper blogmapper ؛ public void setBlogMapper (blogmapper blogmapper) {this.blogmapper = blogmapper ؛ } public void dosomethingwithablog (int blogid) {blog blog = blogmapper.selectblog (blogid) ؛ ...}} sqlsessionfactory
يأخذ كل تطبيق MyBatis مثيلًا لكائن SQLSessionFactory كأنه قلب. يتم إنشاء SQLSessionFactory نفسها بواسطة SQLSessionFactoryBuilder. بشكل عام ، في التطبيق ، ستتوافق قاعدة البيانات فقط مع SQLSessionFactory ، لذلك نحن عمومًا نحدد SQLSessionFactory كنمط مفردة ، أو حقنها خلال الربيع ، إلخ.
طرق إنشاء SQLSessionFactoryBuilder لإنشاء SQLSessionFactory هي:
المعلمات الرئيسية التي صممتها هذه الطرق هي inputstream ، والبيئة ، والخصائص ، حيث يكون InputStream عبارة عن دفق إدخال تم الحصول عليه من ملف التكوين ؛ تمثل البيئة البيئة التي تستخدمها حاليًا بين العديد من البيئات التي تم تكوينها في ملف التكوين ، بما في ذلك مصادر البيانات والمعاملات ، ويتم استخدام البيئة الافتراضية افتراضيًا ؛ باستخدام الخصائص ، سيقوم MyBatis بتحميل الخصائص أو الملفات المقابلة ، والتي يمكن استخدامها في ملف التكوين.
بناء sqlsessionfactory من XML
sqlsessionfactory sqlsessionfactory static sqlsessionfactory = null ؛ static {try {inputStream is = resources.getResourCeasStream ("config/mybatis_config.xml") ؛ sqlsessionFactory = جديد sqlsessionfactorybuilder (). build (IS) ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ }} static sqlsessionfactory getSqlSessionFactory () {return sqlsessionfactory ؛ }
فيما يلي هيكل أساسي لملفات التكوين:
يتضمن ملف تكوين MyBatis بشكل عام الأجزاء التالية:
<البيئات default = "development"> <البيئة id = "development"> <TransactionManager type = "jdbc" /> <dataSource type = "prouded"> <property name = "driver" value = "$ {jdbc.driver}" /> <property name = "{$ {jdbc.url} value = "$ {jdbc.username}"/> <property name = "password" value = "$ {jdbc.password}"/> </dataSource> </ نظرًا لأن MyBatis يمكنه تكوين بيئات متعددة ، يمكنك تحديد بيئة محددة عند إنشاء SQLSessionFactory لإنشاء SQLSessionFactory. إذا لم تحدد ذلك ، فسيتم استخدام البيئة الافتراضية.
TransactionManager
هناك نوعان من مديري المعاملات في MyBatis (أي ، Type = "[JDBC | Managed]"):
JDBC هذا التكوين مباشرة ويستخدم ببساطة إعدادات الالتزام والتراجع JDBC. يعتمد على الاتصالات التي تم الحصول عليها من مصادر البيانات لإدارة نطاق المعاملة.
التكوين المدارة يفعل القليل. لا يرتكب أو تراجع اتصال. ويسمح للحاوية بإدارة دورة حياة كاملة للمعاملة (مثل سياق SPRING أو JEE Application Server) ، وهو يغلق الاتصال افتراضيًا. ومع ذلك ، لا تريد بعض الحاويات هذا ، لذلك إذا كنت بحاجة إلى إيقافه من الاتصال ، فقم بتعيين خاصية CloseConnection على False.
مصدر البيانات
يستخدم عنصر مصدر البيانات واجهة مصدر بيانات JDBC الأساسية لتكوين الموارد لكائنات اتصال JDBC.
ستقوم العديد من تطبيقات MyBatis بتكوين مصدر البيانات كما هو موضح في الأمثلة. ومع ذلك ، ليس من الضروري. يجب أن تعلم أنه من أجل تسهيل استخدام التحميل الكسول ، تكون مصادر البيانات ضرورية.
هناك ثلاثة أنواع مصدر بيانات مدمج (أي ، type = "؟؟؟"):
إلغاء تنفيذ مصدر البيانات هذا هو فتح الاتصال وإغلاقه في كل مرة يتم طلبها. إنه بطيء بعض الشيء ، وهو خيار رائع للتطبيقات البسيطة ، لأنه لا يتطلب اتصالات متاحة في الوقت المناسب. تعمل قواعد البيانات المختلفة أيضًا بشكل مختلف على هذا ، لذلك بالنسبة لبعض قواعد البيانات ، ليس من المهم تكوين مصدر البيانات ، وهذا التكوين هو أيضًا. يتم استخدام مصدر بيانات النوع غير المبرد فقط لتكوين الخصائص الخمس التالية:
كخيار ، يمكنك تمرير خصائص برنامج تشغيل قاعدة البيانات. للقيام بذلك ، تبدأ بادئة السمة بـ "برنامج التشغيل". على سبيل المثال:
driver.encoding = UTF8
سيمر هذا القيمة "UTF8" لتمرير خاصية "الترميز" ، والتي يتم تمريرها إلى برنامج تشغيل قاعدة البيانات من خلال طريقة drivermanager.getConnection (url ، driverproperties).
تم تجميع هذا تطبيق تجمع اتصال مصدر البيانات لكائنات اتصال JDBC ، والذي يتم استخدامه لتجنب الاتصال الأولي ووقت المصادقة اللازمة عند إنشاء مثيلات اتصال جديدة. هذه طريقة شائعة تستخدمها تطبيقات الويب حاليًا للرد على الطلبات بسرعة.
بالإضافة إلى السمات المذكورة أعلاه (غير المبرد) ، هناك العديد من السمات التي يمكن استخدامها لتكوين مصدر البيانات المجمعة:
من بينها ، يتطلب تكوين مصدر بيانات JNDI فقط خصائص:
(1) يتم استخدام خاصية initial_context لإيجاد البيئة من السياق الأولي (أي ، initialContext.lookup (أولي-السياق). هذه خاصية اختيارية. إذا تم تجاهلها ، فسيتم البحث عن خاصية data_source مرة أخرى مباشرة مع inialContext كخلفية.
(2) data_source هذا هو المسار الذي يشير إلى سياق موقع مثيل مصدر البيانات. سيبحث عن البيئة التي يتم إرجاعها بواسطة استعلام initial_context كخلفية. إذا لم ترد initial_context النتيجة ، فسيبحث عن السياق الأولي كبيئة مباشرة.
ثم هناك خريطة. يتم استخدام Mapper لتعيين عبارات SQL. أولاً ، أحتاج إلى إخبار MyBatis بمكان العثور على عبارات SQL هذه ، أي تحديد موقع المورد.
<mappers> <mapper resource = "com/tiantian/mybatis/model/blogmapper.xml"/> </nyber>
فيما يلي ملف تكوين بسيط قمت به أثناء عملية الاختبار:
<؟ Resource = "config/jdbc.properties"> </properties> <TertAliases> <typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> </typealias> <environments default = "development"> <egality id = "development"> name = "driver" value = "$ {jdbc.driver}" /> <property name = "url" value = "$ {jdbc.url}" /> <property name = "username" value = "$ {jdbc.username}" /> <mappers> <mapper resource = "com/tiantian/mybatis/model/blogmapper.xml"/> </nysigers> </isplisturation>
يتم استيراد ملف خاصية خارجي في ملف التكوين أعلاه. يمكن تضمين مقدمة الخاصية في ملف تكوين MyBatis مباشرة في عنصر الخصائص ، أو يمكن تقديمه من الخارج باستخدام عنصر الخصائص ، أو يمكن تمريره كخصائص معلمة عند إنشاء SQLSessionFactory. نظرًا لأن الخصائص في ملفات تكوين MyBatis يمكن تقديمها من العديد من الأماكن ، فإنها تنطوي على مشكلة ذات أولوية ، وسيبحث MyBatis عنهم بالترتيب التالي:
أولاً ، في ملف التكوين ، تتم قراءة الخصائص الموجودة في هيئة عنصر الخصائص ، ثم تتم قراءة الخصائص في ملف الخصائص المقدمة من الخارج ، والتي ستحصل على نفس الخصائص التي تقرأها من قبل. أخيرًا ، تتم قراءة الخصائص الموجودة في الخصائص التي تم تمريرها عند إنشاء SQLSessionFactory ، والتي ستحقق أيضًا نفس الخصائص من قبل.
بعد الحصول على SQLSessionFactory ، سوف تحصل على sqlsession محددة. في عملية استخدام MyBatis ، كل عملية لا يمكن فصلها عن SQLSession ، لذلك من المهم جدًا الحصول على SQLSession. بالإضافة إلى ذلك ، لا يمكن مشاركة SQLSession وعلاج خيط ، لذلك يجب عليك فتحها في كل مرة تحتاج فيها إلى SQLSession ثم تغلقها بعد استخدامها.
جلسة SQLSession = sqlsessionfactory.opensession () ؛
أساليب SQLSessionFactory Zhonghu District Sqlsession هي:
الاختلافات الرئيسية هي:
لا تحتوي طريقة Opensession الافتراضية على معلمات ، فسيقوم بإنشاء SQLSession مع الخصائص التالية:
لدى ExecutorType ثلاث قيم:
تتمثل العمليات الأساسية لـ MyBatis في إضافة وحذف وتعديل والتحقق ، وهي إدراج وحذف وتحديث وتحديد. عند إجراء هذه العمليات الأساسية ، يمكنك استخدام SQLSession مباشرة للوصول إلى التعيين في ملف تكوين MAPPER ، أو يمكنك استخدام واجهة Mapper المقابلة لملف تكوين MAPPER لتنفيذ العمليات ، على افتراض أن المعلمات وقيم الإرجاع للطرق المحددة في واجهة MAPPER يجب أن تكون هي نفسها المعلمات وقيم الإرجاع المحددة. بالإضافة إلى ذلك ، عند استخدام واجهة Mapper ، يمكن كتابة عبارات SQL المقابلة في ملف تكوين Mapper ، أو يمكن وضع علامة عليها مباشرة على الطرق المقابلة في واجهة Mapper باستخدام التعليقات التوضيحية المقابلة. سيظهر هذا في رمز المثال التالي.
فيما يلي سلسلة من رموز المثال:
أول Post A Tool Class للحصول على SQLSessionFactory:
استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد org.apache.ibatis.io.resources ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد org.apache.ibatis.session.sqlsessionfactorybuilder ؛ الطبقة العامة util {private static sqlsessionfactory sqlsessionfactory = null ؛ static {try {inputStream is = resources.getResourCeasStream ("config/mybatis_config.xml") ؛ sqlsessionFactory = جديد sqlsessionfactorybuilder (). build (IS) ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ }} static sqlsessionfactory getSqlSessionFactory () {return sqlsessionfactory ؛ }}
ملف تكوين MyBatis:
<؟ Resource = "config/jdbc.properties"> </properties> <TertAliases> <typealias alias = "blog" type = "com.tiantian.mybatis.model.blog"/> </typealias> <environments default = "development"> <egality id = "development"> name = "driver" value = "$ {jdbc.driver}" /> <property name = "url" value = "$ {jdbc.url}" /> <property name = "username" value = "$ {jdbc.username}" /> <mappers> <mapper resource = "com/tiantian/mybatis/model/blogmapper.xml"/> </nysigers> </ispification>
blogmapper.xml
<؟ مساحة الاسم = "com.tiantian.mybatis.model.blogmapper"> <!-إضافة سجل-> <insert id = "insertBlog" parametertype = "blog"> insert in t_blog (title ، content ، owner) base (#{title} ،#{content} ،#} parametertype = "int" resulttype = "blog"> حدد * من t_blog حيث id = #{id} </select> <!-تعديل السجل-> <تحديث معرف = updateblog "parametertype =" blog "> update t_blog set title = #{title} ، content = #{content} ، owner والاستعلام عن سجلات متعددة لإرجاع النتيجة هي مجموعة. resultType ليس هو نوع المجموعة ، ولكن النوع الموجود في المجموعة-> <select id = "selectall" resulttype = "blog"> حدد * من t_blog </select </select> <!-حذف السجل-> <delete id = "deleteblog" parametertype = "int"> delete from t_blog حيث id = #{id} </delete> </mapper>بعض القضايا التي يجب الإشارة إليها في بيانات رسم خرائط SQL:
blog.java
حزمة com.tiantian.mybatis.model ؛ مدونة الفئة العامة {private int id ؛ عنوان السلسلة الخاصة ؛ محتوى سلسلة خاصة ؛ مالك السلسلة الخاصة ؛ public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getTitle () {return title ؛ } public void settitle (tring title) {this.title = title ؛ } السلسلة العامة getContent () {return content ؛ } public void setContent (string content) {this.content = content ؛ } السلسلة العامة getOwner () {return owner ؛ } public void setOwner (string owner) {this.Owner = Owner ؛ } Override Public String ToString () {return "id:" + id + "، title:" + title + "، content:" + content + "، owner:" + owner ؛ }}
blogmapper.java
حزمة com.tiantian.mybatis.model ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.annotations.delete ؛ استيراد org.apache.ibatis.annotations.insert ؛ استيراد org.apache.ibatis.annotations.select ؛ استيراد org.apache.ibatis.annotations.update ؛ / *** العمليات التالية 1 تكتب SQL في ملف التكوين ، في حين تشير العمليات 2 مباشرة إلى عبارة SQL التي سيتم تنفيذها باستخدام التعليقات التوضيحية* لأن الاسم الكامل للخطوب هو نفسه مساحة الاسم في ملف المدونة. المدونة العامة SelectBlog (int id) ؛ @select ("حدد * من t_blog حيث id = #{id}") المدونة العامة selectBlog2 (int id) ؛ Public Void insertblog (Blog Blog) ؛ insert ("insert في t_blog (العنوان ، المحتوى ، المالك) القيم (#{title} ،#{content} ،#{owner})") public void insertBlog2 (blog blog) ؛ public void updateBlog (Blog Blog) ؛ upDate ("تحديث t_blog set title =#{title} ، content =#{content} ، owner =#{owner} حيث id =#{id}") public void updateBlog2 (blog blog) ؛ public void deleteblog (int id) ؛ delete ("حذف من t_blog حيث id = #{id}") public void deleteblog2 (int id) ؛ القائمة العامة <log> selectall () ؛ @SELECT ("SELECT * from t_blog") قائمة عامة <log> selecall2 () ؛ القائمة العامة <log> fuzzyquery (عنوان السلسلة) ؛ select ("SELECT * from t_blog حيث عنوان مثل/" ٪/"#{title}/" ٪/"") قائمة عامة <blog> fuzzyquery2 (عنوان السلسلة) ؛ }
Test1.Java
حزمة com.tiantian.mybatis.test ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.junit.test ؛ استيراد com.tiantian.mybatis.model.blog ؛ استيراد com.tiantian.mybatis.util.util ؛ / *** هذه السلسلة من العمليات هي عن طريق كتابة SQL في ملف التكوين ، ثم باستخدام SQLSession للتشغيل* Author Andy**/ test 1/ public class test1 {/ *** إضافة سجل*/ test public void testinsertblog () مدونة المدونة = مدونة جديدة () ؛ blog.Settitle ("الصينية") ؛ blog.setContent ("كم عدد الأحلام التي تم إخفاؤها في الريح والمطر لمدة خمسة آلاف سنة") ؛ blog.setowner ("Daily") ؛ Session.insert ("com.tiantian.mybatis.model.blogmapper.insertblog" ، Blog) ؛ session.Commit () ؛ session.close () ؛ } / *** Query سجل واحد* / test public void testselectone () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ مدونة المدونة = (المدونة) session.selectone ("com.tiantian.mybatis.model.blogmapper.selectblog" ، 8) ؛ System.out.println (Blog) ؛ session.close () ؛ } / *** تعديل السجل* / test public void testUpDateblog () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ مدونة المدونة = مدونة جديدة () ؛ blog.setid (7) ؛ // معرف المدونة التي تحتاج إلى تعديل blog.settitle ("الصينية 2") ؛ // تعديل title blog.setContent ("Yellow Face ، Black Eyes ، Smile unchanged") ؛ // modify content blog.setowner ("day 2") ؛ مدونة)؛ session.Commit () ؛ session.close () ؛ } / *** Query All Records* / test public void testselectall () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ قائمة <log> blogs = session.selectlist ("com.tiantian.mybatis.model.blogmapper.selectall") ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ } / *** Query fuzzy* / test public void testfuzzyquery () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ عنوان السلسلة = "الصين" ؛ قائمة <log> blogs = session.selectlist ("com.tiantian.mybatis.model.blogmapper.fuzzyquery" ، title) ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ } / *** حذف السجل* / test public void testDeleteBlog () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ Session.Delete ("com.tiantian.mybatis.model.blogmapper.deleteBlog" ، 8) ؛ session.Commit () ؛ session.close () ؛ }}
test2.java
حزمة com.tiantian.mybatis.test ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.junit.test ؛ استيراد com.tiantian.mybatis.model.blog ؛ استيراد com.tiantian.mybatis.model.blogmapper ؛ استيراد com.tiantian.mybatis.util.util ؛ / *** هذه السلسلة من العمليات هي كتابة عبارات SQL في ملف التكوين ،* ثم تعمل من خلال واجهة mapper المقابلة* Author Andy**/ public class test2 {/ *** إضافة سجل*/ test public void testinsertblog () {sqlsession session = util.getsqlsessionfaction (). مدونة المدونة = مدونة جديدة () ؛ blog.Settitle ("الصينية") ؛ blog.setContent ("كم عدد الأحلام التي تم إخفاؤها في الريح والمطر لمدة خمسة آلاف سنة") ؛ blog.setowner ("Daily") ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ blogmapper.insertblog (Blog) ؛ session.Commit () ؛ session.close () ؛ } / *** Query سجل واحد* / test public void testselectone () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ مدونة المدونة = blogmapper.selectblog (7) ؛ System.out.println (Blog) ؛ session.close () ؛ } / *** تعديل السجل* / test public void testUpDateblog () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ مدونة المدونة = مدونة جديدة () ؛ blog.setId (9) ؛ // معرف المدونة التي تحتاج إلى تعديل blog.settitle ("الصينية 2") ؛ // تعديل title blog.setContent ("Yellow Face ، Black Eyes ، unchanged Smile") ؛ // modify content blog.setowner ("day 2") ؛ blogmapper.updateBlog (Blog) ؛ session.Commit () ؛ session.close () ؛ } / *** Query All Records* / test public void testselectall () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ قائمة <log> blogs = blogmapper.selectall () ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ } / *** Query fuzzy* / test public void testfuzzyquery () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ عنوان السلسلة = "الصين" ؛ قائمة <log> blogs = blogmapper.fuzzyquery (title) ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ } / *** حذف السجل* / test public void testDeleteBlog () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ blogmapper.deleteBlog (10) ؛ session.Commit () ؛ session.close () ؛ }}
Test3.java
حزمة com.tiantian.mybatis.test ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.junit.test ؛ استيراد com.tiantian.mybatis.model.blog ؛ استيراد com.tiantian.mybatis.model.blogmapper ؛ استيراد com.tiantian.mybatis.util.util ؛ / ** * يتم تنفيذ هذه السلسلة من العمليات باستخدام واجهة Mapper * ، ولكن يتم تعريف عبارة SQL المقابلة على الطريقة المقابلة في Mapper من خلال التعليقات التوضيحية * Author Andy * */ public class test3 {/ ** * new Record */ test public void testinsert () {sqlsession essage = util.getqlsessory (). blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ مدونة المدونة = مدونة جديدة () ؛ blog.Settitle ("title2") ؛ blog.setContent ("content2") ؛ blog.setOwner ("owner2") ؛ blogmapper.insertblog2 (Blog) ؛ session.Commit () ؛ session.close () ؛ } / *** ابحث عن سجل واحد* / test public void testselectone () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ مدونة المدونة = blogmapper.selectblog2 (1) ؛ System.out.println (Blog) ؛ session.close () ؛ } / *** ابحث عن سجلات متعددة ، وإرجاع النتيجة كمجموعة* / test public void testselectall () {sqlsession session = util.getsqlsessionfactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ قائمة <Nog> blogs = blogmapper.selectall2 () ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ } / *** تعديل سجل* / test public void testUpdate () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ مدونة المدونة = مدونة جديدة () ؛ blog.setid (3) ؛ blog.Settitle ("title3") ؛ blog.setContent ("content3") ؛ blog.SetOwner ("owner3") ؛ blogmapper.updateblog2 (Blog) ؛ session.Commit () ؛ session.close () ؛ } / *** حذف السجل* / test public void testDelete () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ blogmapper.deleteBlog2 (5) ؛ session.Commit () ؛ session.close () ؛ } test public void testfuzzyquery () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ قائمة <Bload> blogs = blogmapper.fuzzyquery2 ("الصين") ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ session.close () ؛ }}بيان إنشاء الجدول المقابل:
إنشاء جدول `t_blog` (` id` int (11) not null auto_increment ، `title` varchar (255) default null ،` content` varchar (255) default null ، `kould` varchar (50) default null ، key pricial (` id`))