1. الاستعلام
بالإضافة إلى الاستعلام عن سجل واحد ، نحاول هنا الاستعلام عن مجموعة من السجلات.
أضف الطريقة التالية إلى واجهة iusermapper:
قائمة <Sether> getUsers (اسم السلسلة) ؛
إضافة user.xml:
<resultmap type = "user" id "id =" useristlist "> <!-النوع هو الاسم الكامل أو الاسم المستعار للفئة التي تُرجع عنصر القائمة-> <id column =" id "property =" id " /> <result column =" name "property =" name " /> resultmap = "userlist"> <!-resultMap هي قائمة المستخدم المحددة أعلاه-> حدد * من `user` حيث الاسم مثل #{name} </select>طريقة الاختبار:
test public void querylisttest () {sqlsession session = sqlsessionfactory.opensession () ؛ حاول {iusermapper mapper = session.getMapper (iusermapper.class) ؛ قائمة <Sether> المستخدمين = mapper.getusers ("٪ a ٪") ؛ // ٪ يمثل أي حرف في SQL. لـ (المستخدم المستخدم: المستخدمين) {log.info ("{}: {}" ، user.getName () ، user.getAddress ()) ؛ }} أخيرًا {session.close () ؛ }} إذا تم إرجاع استعلام جدول التزامن ، فيجب معالجة الكائن المركب مع الكلمة الرئيسية للارتباط.
إذا قام المستخدم بنشر مقالة ، يمكن لكل مستخدم نشر مقالات متعددة ، ولديهم علاقة فردية.
(1) إنشاء جدول مقال وأدخل بيانات الاختبار:
- إسقاط الجدول إذا كان موجودًا على جدول إسقاط إذا كان هناك "مقال" ؛ - قم بإنشاء جدول يسمى "مقالة" إنشاء جدول "مقال" (`id` int not null auto_increment ،` user_id` int not null ، `title` varchar (100) not null ،` content` text not null ، key pricial (`id`)) engine = innodb auto_increment = 1 default charset = utf8 ؛ - أضف عدة سجلات اختبار إدراج في قيم "المقالة" ("1" ، "1" ، "title1" ، "content1 ') ، (' 2 '،' 1 '،' title2 '،' content2 ') ، (' 3 '،' 1 '،' title3 '،' ') ، ((2) com.john.hbatis.model.article Class:
مقالة الطبقة العامة {private int id ؛ مستخدم خاص للمستخدم ؛ عنوان السلسلة الخاصة ؛ محتوى سلسلة خاصة ؛ // يتم حذف getters و etters}(3) أضف في iusermapper:
قائمة <Contract> getArticlesByuserId (int id) ؛
(4) إضافة user.xml:
<resultmap type = "com.john.hbatis.model.article" id = "articlelist"> <id column = "a_id" property = "id" /> <result column = "title" property = "title" /> <result column = "content" propert property = "id" /> <result column = "name" property = "name" /> <result column = "address" property = "address" /> </isnivers على A.User_id = U.ID و U.ID =#{id} </select>(5) طريقة الاختبار:
test public void getArticlesByUserIdTest () {sqlsession session = sqlsessionfactory.opensession () ؛ حاول {iusermapper mapper = session.getMapper (iusermapper.class) ؛ قائمة <article> المقالات = mapper.getArticlesByuserId (1) ؛ لـ (المقالة المقالة: المقالات) {log.info ("{} - {} ، المؤلف: {}" ، article.getTitle () ، article.getContent () ، article.getuser (). getName ()) ؛ }} أخيرًا {session.close () ؛ }} مُرفَق:
بالإضافة إلى تحديد تعيين الحقول والسمات داخل علامة الارتباط ، يمكنك أيضًا إعادة استخدام نتائج المستخدم:
<insivale property = "user" javatype = "user" resultmap = "userist ster" />
2. وأضاف
أضف الطريقة التالية إلى واجهة iusermapper:
int adduser (مستخدم المستخدم) ؛
user.xml إضافة:
<insert id = "addUser" parametertype = "user" usegeneratedKeys = "true" keyproperty = "id"> <!- useGeneratedKeys يحدد المفتاح الأساسي الذي يستخدمه MyBatis قاعدة البيانات لإنشاءها تلقائيًا وملبئها على الخصائص المحددة بواسطة keyproperty. إذا لم يتم تحديدها ، لا يمكن لكائن الإرجاع الحصول على القيمة التي تم إنشاؤها -> إدراج في قيم المستخدم (الاسم ، العمر ، العنوان) (#{name} ،#{Age} ،#{address}) </insert>طريقة الاختبار:
Test public void addusertest () {user user = new user ("lucy" ، 102 ، "Happy District") ؛ جلسة SQLSession = sqlsessionfactory.opensession () ؛ حاول {iusermapper mapper = session.getMapper (iusermapper.class) ؛ int effectedCount = mapper.adduser (user) ؛ session.Commit () ؛ // لا يتم إرسال الافتراضي تلقائيًا. Call Session.getConnection (). getAutocommit () لعرض log.info ("{} تم إدراج سجل جديد بنجاح معرفه: {}" ، effectedCount ، user.getID ()) ؛ } أخيرًا {session.close () ؛ }}3. تحديث
طريقة إضافة الواجهة:
int updateUser (مستخدم المستخدم) ؛
user.xml إضافة:
<update id = "updateUser" parametertype = "user"> update `user` set set name =#{name} ، age =#{age} ، address =#{address} حيث id =#{id} </update>طريقة الاختبار:
test public void updateUsertest () {sqlsession session = sqlsessionfactory.opensession () ؛ حاول {iusermapper mapper = session.getMapper (iusermapper.class) ؛ مستخدم المستخدم = mapper.getUserById (8) ؛ user.setaddress ("Districtiveived District") ؛ int effectedCount = mapper.updateuser (user) ؛ // بالإضافة إلى السمات المراد تعديلها ، يجب أيضًا تعيين سمات المستخدم الأخرى ، وإلا سيتم تحديث هذه السمات بواسطة قاعدة البيانات إلى القيمة الأولية (NULL أو 0 ، إلخ). يمكنك الاستعلام عنها أولاً ، ولكن هذا سيزيد من التفاعل غير الضروري مع قاعدة البيانات. يمكن للشروط التالية تجنب هذه المشكلة. log.info ("العد المتأثر: {}" ، OffectedCount) ؛ session.Commit () ؛ } أخيرًا {session.close () ؛ }}4. حذف
طريقة إضافة الواجهة:
int deleteuser (int id) ؛
user.xml إضافة:
<delete id = "deleteuser" parametertype = "int"> delete from `user` where id =#{id} </delete>طريقة الاختبار:
test public void deleteusertest () {sqlsession session = sqlsessionfactory.opensession () ؛ حاول {iusermapper mapper = session.getMapper (iusermapper.class) ؛ int effectedCount = mapper.deleteuser (8) ؛ log.info ("العد المتأثر: {}" ، OffectedCount) ؛ session.Commit () ؛ } أخيرًا {session.close () ؛ }}