عند تحديد رسم الخرائط في MyBatis ، يمكن استخدام نوع الإرجاع مع ResultType أو ResultMap. تمثل ResultType مباشرة نوع الإرجاع (المقابل للكيان في كائن النموذج الخاص بنا) ، في حين أن ResultMap هي إشارة إلى خريطة النتيجة الخارجية (يتم تحديد علاقة القيمة المخفية-> بين DB والنموذج مسبقًا) ، ولكن لا يمكن وجود ResultType و ResultMap في نفس الوقت.
عندما يقوم MyBatis بالاستعلام عن التعيين ، في الواقع ، يتم وضع كل استعلام سمة في خريطة مقابلة ، حيث يكون المفتاح هو اسم السمة والقيمة هي قيمتها المقابلة.
① عندما تكون سمة نوع الإرجاع المتوفرة resultType ، ستأخذ MyBatis أزواج القيمة الرئيسية في الخريطة وتعيينها إلى السمات المقابلة للكائن المحدد بواسطة ResultType. في الواقع ، فإن نوع العودة لكل خريطة استعلام لـ MyBatis هو ResultMap. ومع ذلك ، عندما تكون سمة نوع الإرجاع المقدم هي resultType ، يقوم MyBatis تلقائيًا بتعيين القيمة المقابلة لسمات الكائن المحدد بواسطة ResultType.
② عندما يكون نوع الإرجاع المقدم هو resultmap ، لأن الخريطة لا يمكن أن تمثل نموذج المجال جيدًا ، فإنها تحتاج إلى تحويله إلى الكائن المقابل نفسه ، والذي غالبًا ما يكون مفيدًا للغاية في الاستعلامات المعقدة.
فيما يلي مثال لتوضيح الفرق بين الاثنين:
حزمة com.clark.model ؛ استيراد java.util.date ؛ سلع الطبقة العامة {private integer id ؛ عدد صحيح خاص Categer ؛ اسم السلسلة الخاصة ؛ سعر مزدوج خاص ؛ وصف السلسلة الخاصة ؛ عدد صحيح خاص OrderNo ؛ تاريخ خاص updateTime ؛ السلع العامة () {} السلع العامة (معرف الصدفة ، integer cateid ، اسم السلسلة ، السعر المزدوج ، الوصف السلسلة ، integer orderno ، date updateTime) {super () ؛ this.id = id ؛ this.cateid = cateid ؛ this.name = name ؛ this.price = السعر ؛ this.description = الوصف ؛ this.orderno = orderno ؛ this.updateTime = updateTime ؛ } integer getId () {return id ؛ } public void setId (integer id) {this.id = id ؛ } integer getCateId () {return cateid ؛ } public void setCateId (integer cateid) {this.cateid = cateid ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public double getPrice () {return price ؛ } public void setPrice (price double) {this.price = price ؛ } السلسلة العامة getDescription () {return description ؛ } public void setDescription (وصف السلسلة) {this.description = description ؛ } integer getorderno () {return orderno ؛ } public void setorderno (integer orderno) {this.orderno = orderno ؛ } التاريخ العام getTimestamp () {return updateTime ؛ } public void setTimestamp (Date UpdateTime) {this.updateTime = updateTime ؛ } Override public string toString () {return "[command compern id ="+this.getID ()+"، name ="+this.getName ()+"، orderno ="+this.getorderno ()+"، cateid ="+that.getCateId ()+"، updateTime =" }}<؟ alias = "good" type = "com.clark.model.goods"> < /typealias> </twarealiases> <البيئات default = "development"> <البيئة id = "development" value = "jdbc: oracle: thin:@172.30.0.125: 1521: oradb01"/> <property name = "username" value = "settlement"/> <property name = "password" value = "settlext </nedles> </isplicuration> </span>
<؟ type = "com.clark.model.goods" id = "t_good"> <id column = "id" property = "id"/> <result column = "cate_id" property = "cateid"/> <result column = "name" property = "name"/> property = "orderno"/> <result column = "update_time" property = "updateTime"/> </resultmap> <!-الفرق بين resultmap و resulttype-> <select id = id = "selectallgoods" resultmap = "t_good"> حدد معرف ، cate_id ، الاسم ، السعر ، الوصف ، order_no ، update_time من البضائع </select> <insert id = "insertgood" parametertype = "goods"> insert في البضائع (id ، cate_id ، الاسم ، السعر ، وصف ، update_no ، update_time) القيم (#{id} ،#{cateid} ،#{name} ،#{price} ،#{description} ،#{orderno} ،#{updateTime}) </sert> </mapper> حزمة com.clark.mybatis ؛ استيراد java.io.ioException ؛ استيراد java.io.reader ؛ استيراد java.util.list ؛ استيراد org.apache.ibatis.io.resources ؛ استيراد org.apache.ibatis.session.sqlsession ؛ استيراد org.apache.ibatis.session.sqlsessionfactory ؛ استيراد org.apache.ibatis.session.sqlsessionfactorybuilder ؛ استيراد com.clark.model.goods ؛ الفئة العامة testgoods {public static void main (string [] args) {string resource = "configuration.xml" ؛ Try {reader reader = resources.getResourCeasReader (Resource) ؛ sqlsessionfactory sessionfactory = new SQLSessionFactoryBuilder (). Build (reader) ؛ جلسة sqlsession = sessionfactory.opensession () ؛ </span> <span style = "font-size: 18px ؛"> <span style = "White-Space: pre"> </span> // synarios باستخدام sessiontype goods = (goods) session.selectone ("clark.selectgoodbyid" ، 4) ؛ system.out.println (goods.toString ()) ؛ </span> [html] عرض شظايا رمز عرض النسخ العادي المشتقة من شظايا الكود الخاصة بي على الكود <span style = "font-size: 18px ؛"> <span style = "white-space: pre" </span> // sinarios باستخدام قائمة النتيجة <gosts> gs = لـ (goods2: gs) {system.out.println (goods2.toString ()) ؛ } // goods buss = new goods (4 ، 12 ، "Clark" ، 12.30 ، "test is ok" ، 5 ، new Date ()) ؛ // session.insert ("clark.insertgood" ، goods) ؛ // session.commit () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}الناتج الناتج هو:
<span style = "color:#cc0000 ؛"> [command include: id = 4 ، name = clark ، orderno = null ، cateid = null ، updateTime = null] --- النتيجة باستخدام resultType </span> <span style = "color:#33ff33 ؛"> --- النتيجة باستخدام النتيجة ----------------- </span>
ما سبق هو مقدمة للفرق بين resulttype و resultmap في mybatis المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!