MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC تقريبًا والمعلمات وتغليف البحث في مجموعة النتائج. يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
رسم الخرائط الفردي
في الحياة ، لا تزال هناك أمثلة فردية ، مثل الطلاب وبطاقات الهوية ، أو في بلدنا ، يتم تنفيذ نظام الزواج الأحادي. ثم ليس لدينا سوى بطاقة هوية واحدة للطلاب وبطاقات الهوية ، وبالطبع هناك بطاقة هوية واحدة فقط لكل بطاقة هوية.
نص قاعدة البيانات:
- حذف قاعدة بيانات إسقاط قاعدة البيانات إذا كانت موجودة myBaits ؛- قم بإنشاء قاعدة بيانات إنشاء قاعدة بيانات إذا لم تكن موجودة في مجموعة الأحرف الافتراضية MyBatis UTF8 ؛- حدد قاعدة بيانات استخدم myBatis ؛- حذف جدول Drop Drop Drop Table ؛ إنشاء طالب جدول (SID int (255) ، Sname varchar (32) ، SCID int (255) ، القيد PK_SID المفتاح الأساسي (SID) ، القيد FK_SCID المفتاح الخارجي (SID) مراجع (CID)) ؛- إضافة بيانات الاختبار إلى البطاقة (CID ، NUM) قيم (1 ، '123456789012345678') ؛ القيم (1 ، "هاها" ، 1) ؛
إنشاء فئة One2one.card.java جديدة
Package One2 One ؛ import java.io.serializable ؛/*** بطاقة معرف*Author Administrator **/ @ @crumpresswarnings ("Serial") تتابع بطاقة الفئة العامة serializable {private integer cid ؛ private string num ؛ {return num ؛} public void setNum (String num) {this.num = num ؛}}قم بإنشاء فئة One2 One2one.student.java
Package One2 One ؛ import java.io.serializable ؛/*** student*Author Administrator **/ @ @cumpresswarnings ("Serial") طالب الطبقة العامة ينفذ serializable {private integer sid ؛ private string sname ؛ private card ؛ integer public geted () {return sid ؛ sname ؛} public void setSname (String sname) {this.sname = sname ؛} public card getCard () {return card ؛} public void setcard (بطاقة بطاقة) {this.card = card ؛}}قم بإنشاء ملف cardmapper.xml جديد تحت حزمة One2 One
<؟ type = "One2one.card" id = "cardmap"> <id column = "cid" property = "CID"/> <result column = "num" property = "num"/> <resultMap> </mapper>
وبالمثل ، قم بإنشاء ملف studentMapper.xml جديد
<؟ type = "one2one.student" id = "studentMap"> <id column = "sid" property = "sid"/> <result column = "sname" property = "sname"/> <!-لا تكتب الحقول ذات الصلة-> </resultmap> <select id = "findbyid" parametertype = "Integer" cwhere s.scid = c.cid و s.sid = #{sid} </select> </papper>إنشاء ملف mybatis.cfg.xml جديد ضمن SRC وتضمين ملفات studentMapper.xml و cardmapper.xml
<؟ default = "mysql_developer"> <!-قم بتوصيل معلومات البيئة mysql-> <البيئة id = "mysql_developer"> <!-myBatis يستخدم JDBC Manager-> <TransactionManager type = "jdbc"/> <! التفاعل مع قاعدة البيانات -> <property name = "driver" value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis"/> <property name = username value = "mysqladmin"/> <dataSource> </eversity> <!-قم بتوصيل معلومات البيئة oracle-> <البيئة id = "oracle_developer"> <!-myBatis يستخدم JDBC Manager-> <TransactactionManager type = "jdbc"/> <! خصائص التفاعل مع قواعد البيانات -> <property name = "driver" value = "oracle.jdbc.driver.oracledriver"/> <property name = "url" value = "jdbc: oracle: thin:@127.0.0.1: 1521: orcl"/> <property name = username "value =" scott "/> value = "tiger"/> </dataSource> </eversity> </eversionments> <!-تحميل ملف الخريطة-> <mappers> <mapper resource = "One2Oone/CardMapper.xml"/> <mapper Resource = "One2Oone/StudentMapper.xml"/> </mappers> </configuration>
قم بإنشاء فئة جديدة من فئة الأدوات mybatisutil.java ضمن حزمة UTIL
package util ؛ import java.io.ioException ؛ import java.io.reader ؛ import java.sql.connection ؛ import org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlSession org.apache.ibatis.session.sqlsessionfactorybuilder ؛ الطبقة العامة mybatisutil {private static threadlocal <sqlsession> threadlocal = new threadlocal <sqlsession> () ؛ src /mybatis.cfg.xmlstatic {try {reader reader = resources.getResourCeasReader ("mybatis.cfg.xml") ؛ sqlsessionfactory = new sqlsessionfactorybuilder (). build (reader) ؛ sqlsession* @return*/public static sqlsession getSqlSession () {// الحصول على كائن sqlsession من threadsqlsession sqlsession = threadlocal.get () ؛ يرتبط SQLSession بـ threadthreadlocal. if (sqlsession! = null) {// close sqlsession object sqlsession.close () ؛ // افصل العلاقة بين الخيط الحالي و sqlsession threadlocal.remove () ؛ sqlsession.getConnection () ؛ system.out.println (conn! = null؟ "اتصال ناجح": "فشل الاتصال") ؛}}قم بإنشاء فئة جديدة من طبقة StuentCarddao.java
package One2 One ؛ import org.apache.ibatis.session.sqlsession ؛ استيراد org.junit.test ؛ استيراد util.mybatisutil ؛/*** طبقة الثبات* @Author Administrator **/public class studentcarddao {/*** Query Quisty No. استثناء {sqlsession sqlsession = null ؛ حاول {sqlsession = mybatisutil.getsqlsession () ؛ إرجاع sqlsession.selectone ( أخيرًا ، {myBatisutil.closesqlsession () ؛}} // اختبار الاستعلام عن الطلاب رقم 1 معلومات بطاقة الهوية ومعلومات بطاقة الهوية testpublic void testfindbyid () يلقي الاستثناء {studentCarddao dao = new StudentCarddao () }}في هذا الوقت ، لا يمكننا إلا الاستعلام عن اسم الطالب رقم 1 ، لكن لا يمكننا الاستعلام عن رقم هويته ، لأن قيمة سمة البطاقة في هذا الوقت هي NULL ، والتي يمكن رؤيتها من StudentMapper.xml
<SELECT ID = "FindById" parametertype = "integer" resultMap = "StudentMap">
عندما يقوم MyBatis بتوصيف هذه الجملة ، يمكنها فقط تغليف بيانات الاستعلام في SID و Sname ، فماذا أفعل؟
في studentMapper.xml
<resultmap type = "One2one.card" id = "cardmap"> <id column = "cid" property = "cid"/> <result column = "num" property = "num"/> <result column = "num"/> </resultmap>
يزيد
<!-تقديم معلومات التعيين في خاصية ملف cardmapper.xml تمثل الخصائص المرتبطة بالطالب-> <Association property = "card" resultMap = "CardnamesPace.cardMap"/>
ثم المحتوى الكامل لـ StudentMapper.xml في هذا الوقت هو كما يلي:
<؟ type = "One2one.student" id = "studentMap"> <id column = "sid" property = "sid"/> <result column = "sname" property = "sname"/> <! id = "findbyid" parametertype = "integer" resultMap = "StudentMap"> Select S.Sid ، S.Sname ، C.Cid ،
الآن يمكنك اختبار رقم معرف الطالب الخاص بك
تغيير طريقة الاختبار لفئة طبقة الثبات stuentcarddao.java
// testpublic void testfindbyid () يلقي الاستثناء {studentCarddao dao = new StudentCarddao () ؛ student student = dao.findbyid (1) ؛ system.out.println (student.getsid ()+":"بصورة مماثلة
أضف طريقة للاستعلام عن معلومات الطالب "Haha" ومعلومات بطاقة الهوية في فئة StudentDao.java
/*** استعلام المعلومات ومعلومات بطاقة الهوية للطلاب "haha"* param name* @return* @throws استثناء*/طالب عام FindByName (اسم السلسلة) يلقي الاستثناء {sqlsession sqlsession = null ؛ try {sqlsession = mybatisutil.getsqlsession () ؛ (استثناء E) {E.PrintStackTrace () ؛ رمي e ؛} أخيرًا {mybatisutil.closesqlsession () ؛}}وأضف طرق الاختبار
// testpublic void testfindbyname () يلقي الاستثناء {studentCarddao dao = new StudentCarddao () ؛ student student = dao.findbyname ("haha") ؛ system.out.println (student.getsid ()+":"+student.getsname ()+":بالطبع ، إذا قمت باختباره الآن ، فستموت فشلاً ذريعًا لأنك لم تقم بتكوين <select> في ملف StudentMapper.xml ، لذلك أضف <select> معلومات التكوين إلى ملف studentMapper.xml.
<select id = "findbyname" parametertype = "string" resultMap = "StudentMap"> SELECT S.SID ، S.Sname ، C.CID ،
بهذه الطريقة سيكون الاختبار ناجحًا. تم الانتهاء من المهمة.
الرمز الكامل كما يلي:
نصوص قاعدة البيانات MySQL
- حذف قاعدة بيانات إسقاط قاعدة البيانات إذا كانت موجودة myBaits ؛- قم بإنشاء قاعدة بيانات إنشاء قاعدة بيانات إذا لم تكن موجودة في مجموعة الأحرف الافتراضية MyBatis UTF8 ؛- حدد قاعدة بيانات استخدم myBatis ؛- حذف جدول Drop Drop Drop Table ؛ إنشاء طالب جدول (SID int (255) ، Sname varchar (32) ، SCID int (255) ، القيد PK_SID المفتاح الأساسي (SID) ، القيد FK_SCID المفتاح الخارجي (SID) مراجع (CID)) ؛- إضافة بيانات الاختبار إلى البطاقة (CID ، NUM) قيم (1 ، '123456789012345678') ؛ القيم (1 ، "هاها" ، 1) ؛
فئة الأدوات mybatis.java فئة
package util ؛ import java.io.ioException ؛ import java.io.reader ؛ import java.sql.connection ؛ import org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlSession org.apache.ibatis.session.sqlsessionfactorybuilder ؛ الطبقة العامة mybatisutil {private static threadlocal <sqlsession> threadlocal = new threadlocal <sqlsession> () ؛ src /mybatis.cfg.xmlstatic {try {reader reader = resources.getResourCeasReader ("mybatis.cfg.xml") ؛ sqlsessionfactory = new sqlsessionfactorybuilder (). build (reader) ؛ sqlsession* @return*/public static sqlsession getSqlSession () {// الحصول على كائن sqlsession من threadsqlsession sqlsession = threadlocal.get () ؛ يرتبط SQLSession بـ threadthreadlocal. if (sqlsession! = null) {// close sqlsession object sqlsession.close () ؛ // افصل العلاقة بين الخيط الحالي و sqlsession threadlocal.remove () ؛ sqlsession.getConnection () ؛ system.out.println (conn! = null؟ "اتصال ناجح": "فشل الاتصال") ؛}}ملف mybatis.cfg.xml
<؟ default = "mysql_developer"> <!-قم بتوصيل معلومات البيئة mysql-> <البيئة id = "mysql_developer"> <!-myBatis يستخدم JDBC Manager-> <TransactionManager type = "jdbc"/> <! التفاعل مع قاعدة البيانات -> <property name = "driver" value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis"/> <property name = username value = "mysqladmin"/> <dataSource> </eversity> <!-قم بتوصيل معلومات البيئة oracle-> <البيئة id = "oracle_developer"> <!-myBatis يستخدم JDBC Manager-> <TransactactionManager type = "jdbc"/> <! خصائص التفاعل مع قواعد البيانات -> <property name = "driver" value = "oracle.jdbc.driver.oracledriver"/> <property name = "url" value = "jdbc: oracle: thin:@127.0.0.1: 1521: orcl"/> <property name = username "value =" scott "/> value = "tiger"/> </dataSource> </eversity> </eversionments> <!-تحميل ملف الخريطة-> <mappers> <mapper resource = "One2Oone/CardMapper.xml"/> <mapper Resource = "One2Oone/StudentMapper.xml"/> </mappers> </configuration>
card.java و student.java
Package One2 One ؛ import java.io.serializable ؛/*** بطاقة معرف*Author Administrator **/ @ @crumpresswarnings ("Serial") تتابع بطاقة الفئة العامة serializable {private integer cid ؛ private string num ؛ {return num ؛} public void setnum (سلسلة num) {this.num = num ؛}} package One2One ؛ import java.io.serializable ؛/*** student* @Author Administrator **/ @ @crumpresswarnings ("serial") تنفس الطالب العام serializable setSID (integer sid) {this.sid = sid ؛} السلسلة العامة getName () {return sname ؛} public void setSname (String sname) {this.sname = sname ؛ملف cardmapper.xml الخاص بـ card.java
<؟ type = "One2one.card" id = "cardmap"> <id column = "cid" property = "CID"/> <result column = "num" property = "num"/> <resultMap> </mapper>
ملف التعيين المقابل لملف الطالب. java class
<؟ type = "One2one.student" id = "studentMap"> <id column = "sid" property = "sid"/> <result column = "sname" property = "sname"/> <! id = "findbyid" parametertype = "integer" resultmap = "studentMap"> Select S.Sid ، S.Sname ، C.Cid ، S.Sid ، S.Sname ، C.Cid ،
فئة طبقة الثبات الطالب
package One2 One ؛ import org.apache.ibatis.session.sqlsession ؛ استيراد org.junit.test ؛ استيراد util.mybatisutil ؛/*** طبقة الثبات* @Author Administrator **/public class studentcarddao {/*** Query Quisty No. استثناء {sqlsession sqlsession = null ؛ حاول {sqlsession = mybatisutil.getsqlsession () ؛ إرجاع sqlsession.selectone ( أخيرًا {myBatisutil.closesqlSession () ؛}}/*** استعلام "Haha" معلومات الطالب ومعلومات بطاقة الهوية* param name* @return* throos استثناء*/الطالب العام findbyname (اسم السلسلة) يلقي الاستثناء {sqlsession sqlsession = null ؛ try {sqlsession = mybatisession. sqlsession.selectone ("studentNamespace.findbyname" ، name) ؛} catch (استثناء e) {E.PrintStackTrace () ؛ رمي e ؛} أخيرًا {mybatisutil.closeqlSession () ؛ studentCarddao () ؛ طالب الطالب = dao.findbyid (1) ؛ system.out.println (student.getsid ()+":"+student.getSname ()+":"+student.getCard (). New StudentCarddao () ؛ student student = dao.findbyName ("haha") ؛ system.out.println (student.getsid ()+":"+student.getSname ()+":ما سبق هو أول برنامج تعليمي على تعيين MyBatis الفردي الذي قدمه المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!