ในบทความนี้ฉันจะแนะนำหลักการกรอบการทำงานของ MyBatis และโปรแกรมเบื้องต้นของ MyBatis เพื่อตระหนักถึงการเพิ่มการลบการดัดแปลงและการตรวจสอบของผู้ใช้ อะไรคือข้อดีและข้อเสียและความสัมพันธ์ที่มีอยู่ระหว่าง mybatis และไฮเบอร์เนต ฉันหวังว่ามันจะเป็นประโยชน์กับเพื่อนของฉัน หากมีข้อบกพร่องใด ๆ โปรดให้คำแนะนำกับฉัน
mybatis คืออะไร?
MyBatis เป็นโครงการโอเพ่นซอร์สของ Apache ในปี 2010 โครงการนี้ถูกย้ายจาก Apache Software Foundation เป็น Google Code และถูกเปลี่ยนชื่อ MyBatis อพยพไปยัง GitHub ในเดือนพฤศจิกายน 2013
MyBatis เป็นเฟรมเวิร์กเลเยอร์การคงอยู่ที่ยอดเยี่ยมที่รองรับ SQL ที่กำหนดเองขั้นตอนที่เก็บไว้และการทำแผนที่ขั้นสูง MyBatis หลีกเลี่ยงรหัส JDBC เกือบทั้งหมดและพารามิเตอร์การตั้งค่าด้วยตนเองและชุดผลลัพธ์ที่ถอดรหัส MyBatis ใช้ XML อย่างง่ายหรือคำอธิบายประกอบเพื่อกำหนดค่าและแผนที่ดั้งเดิมการแมปอินเทอร์เฟซและ Java Pojos (วัตถุ Java เก่าธรรมดา) ลงในบันทึกในฐานข้อมูล พูดง่ายๆคือ MyBatis เป็นกรอบเลเยอร์ถาวร MyBatis อนุญาตให้โปรแกรมมุ่งเน้นไปที่ SQL และสร้างคำสั่ง SQL ได้อย่างอิสระและยืดหยุ่นซึ่งตอบสนองความต้องการผ่านวิธีการทำแผนที่ที่จัดทำโดย MyBatis MyBatis สามารถป้อนแผนที่พารามิเตอร์อินพุตโดยอัตโนมัติเพื่อเตรียมการและทำแผนที่ผลลัพธ์แบบสอบถามที่ตั้งค่าไว้ในวัตถุ Java ได้อย่างยืดหยุ่น
ต่อไปให้เข้าใจหลักการกรอบของ mybatis ผ่านรูปภาพ:
Framework สถาปัตยกรรมคำอธิบาย:
. การโหลดไฟล์การกำหนดค่า: การกำหนดค่ามาจากสองสถานที่หนึ่งคือไฟล์การกำหนดค่าและอื่น ๆ คือคำอธิบายประกอบของรหัส Java ข้อมูลการกำหนดค่าของ SQL ถูกโหลดลงในวัตถุ MappedStatement (รวมถึงการกำหนดค่าการแมปพารามิเตอร์ที่ผ่านการกำหนดค่าคำสั่ง SQL ที่ดำเนินการและการกำหนดค่าการแมปผลลัพธ์) และเก็บไว้ในหน่วยความจำ
ข. การแยกวิเคราะห์ SQL: เมื่อเลเยอร์อินเตอร์เฟส API ได้รับคำขอการโทรจะได้รับ ID ของ SLQ ที่เข้ามาและวัตถุที่เข้ามา (สามารถเป็นแผนที่หรือประเภทข้อมูลพื้นฐาน) MyBatis จะพบการแม็พที่สอดคล้องกันตาม ID ของ SQL จากนั้นจึงแยกวิเคราะห์ MappedStatement ตามวัตถุพารามิเตอร์ที่เข้ามา หลังจากการแยกวิเคราะห์คุณจะได้รับคำสั่ง SQL และพารามิเตอร์ที่จะดำเนินการในตอนท้าย
ค. SQL Execution: ใช้ SQL ขั้นสุดท้ายและพารามิเตอร์ไปยังฐานข้อมูลสำหรับการดำเนินการและรับผลลัพธ์ของการใช้งานฐานข้อมูล
d. การแม็พผลลัพธ์: แปลงผลลัพธ์ของฐานข้อมูลการทำงานตามการกำหนดค่าการแมปซึ่งสามารถแปลงเป็น HashMap, Javabean หรือประเภทข้อมูลพื้นฐานและส่งคืนผลลัพธ์สุดท้าย
MyBatis เริ่มต้นการวิเคราะห์โปรแกรม
ถัดไปตัวแก้ไขจะแนะนำข้อกำหนดเฉพาะร่วมกับการสาธิตและข้อกำหนดมีดังนี้:
ข้อมูลผู้ใช้แบบสอบถามตามรหัสผู้ใช้
ข้อมูลผู้ใช้สอบถามข้อมูลผู้ใช้ตามชื่อผู้ใช้
เพิ่มลบและอัปเดตผู้ใช้
ขั้นตอนแรกคือการสร้างแพ็คเกจและคลาสต่างๆไดเรกทอรีโครงการมีดังนี้:
ขั้นตอนที่สองคือการเขียนเนื้อหาใน SQLMAPCONFIG.XML และกำหนดค่าสภาพแวดล้อมการทำงานแหล่งข้อมูลการทำธุรกรรม ฯลฯ ของ MyBatis รหัสมีลักษณะเช่นนี้:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <? xml version = "1.0" การเข้ารหัส = "UTF-8" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <การกำหนดค่า> <!-หลังจากสปริงถูกรวมเข้าด้วยกัน กลุ่มการเชื่อมต่อจัดการโดย myBatis -> <dataSource type = "polled"> <property name = "driver" value = "$ {jdbc.driver}"/> <property name = "url" value = "$ {jdbc.url}"/> <property name = "username" value value = "$ {jdbc.password}"/> </dataSource> </environments> <!-การโหลดไฟล์แผนที่-> <mappers> resource = "SQLMAP/user.xml"/> </apers>ขั้นตอนที่สามคือการเขียนเนื้อหาใน user.java ดังที่แสดงด้านล่าง:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> Package Cn.itcast.mybatis.po; นำเข้า java.util.date; /** * * <p> ชื่อเรื่อง: ผู้ใช้ </p> * <p> คำอธิบาย: ผู้ใช้ PO </p> * @author ding guohua * @date 31 กรกฎาคม 2016 15:39:04 * @version 1.0 */ผู้ใช้ระดับสาธารณะ {// ชื่อแอตทริบิวต์สอดคล้องกับฟิลด์ของตารางฐานข้อมูล ชื่อผู้ใช้สตริงส่วนตัว; // ชื่อผู้ใช้ส่วนตัว String Sex; // เพศวันเกิดวันเกิด; // วันเกิดที่อยู่สตริงส่วนตัว; // ที่อยู่สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } Public String getSex () {return sex; } โมฆะสาธารณะ setsex (String sex) {this.sex = sex; } วันที่สาธารณะ getBirthday () {ส่งคืนวันเกิด; } โมฆะสาธารณะ setBirthday (วันเกิดวันที่) {this.birthday = วันเกิด; } สตริงสาธารณะ getAddress () {return address; } โมฆะสาธารณะ setAddress (ที่อยู่สตริง) {this.address = ที่อยู่; } @Override สตริงสาธารณะ toString () {return "ผู้ใช้ [id =" + id + ", ชื่อผู้ใช้ =" + ชื่อผู้ใช้ + ", sex =" + sex + ", วันเกิด =" + วันเกิด + ", ที่อยู่ =" + ที่อยู่ + "]"; }} </span>ขั้นตอนที่ 4: หากต้องการใช้ฟังก์ชั่นการเพิ่มการลบการแก้ไขและการค้นหาก่อนเขียนเนื้อหาใน user.xml ก่อนที่แสดงไว้ด้านล่าง:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> <? xml version = "1.0" encoding = "UTF-8" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-เนมสเปซเนมสเปซเป็นฟังก์ชันของการจำแนกการจัดการ SQL และการแยก SQL Note: การใช้ Mapper Proxy Method " ในไฟล์การแม็พ-> <!-ข้อกำหนด: สอบถามบันทึกของตารางผู้ใช้ผ่าน ID-> <!-ดำเนินการค้นหาฐานข้อมูล ID: ระบุ SQL ในไฟล์การแมปห่อหุ้มคำสั่ง SQL ลงในการแม็พ ID แสดงถึงพารามิเตอร์ที่ได้รับอินพุตและชื่อพารามิเตอร์คือ ID หากพารามิเตอร์อินพุตเป็นประเภทง่าย ๆ ชื่อพารามิเตอร์ใน #{} สามารถเป็นไปได้โดยพลการและสามารถเป็นค่าหรือชื่ออื่น ๆ ผลลัพธ์: ระบุประเภทของวัตถุ Java ที่แมปของผลลัพธ์เอาต์พุตของ SQL และเลือกระบุผลลัพธ์ที่เป็นตัวแทนของวัตถุ Java -> <select id = "findUserById" parameterType = "int" resultType = "cn.itcast.mybatis.po.user"> เลือก * จากผู้ใช้ที่ id =#{value} </select> <! การประกบสตริง SQL และประกบพารามิเตอร์ที่ได้รับลงใน SQL โดยไม่ต้องแก้ไขใด ๆ ใช้ $ {} เพื่อประกบ SQL ทำให้ SQL ฉีด $ {value}: เพื่อรับเนื้อหาของพารามิเตอร์อินพุต หากประเภทที่เข้ามาเป็นประเภทง่าย ๆ คุณสามารถใช้ค่าใน $ {}-> <select id = "findUserByName" parameterType = "java.lang.string" resultType = "cn.itcast.mybatis.po.user"> select * selective ประเภทพารามิเตอร์คือ pojo (รวมถึงข้อมูลผู้ใช้) ระบุชื่อแอตทริบิวต์ของ pojo ใน #{} รับค่าแอตทริบิวต์ของวัตถุ pojo, mybatis ได้รับค่าแอตทริบิวต์ของวัตถุผ่าน ognl-> <insert id = "insertuser" returnt ของ datixert last_insert_id (): รับคีย์ค่าหลักที่บันทึกไว้เพียงแทรกลงไปซึ่งใช้ได้กับคีย์คีย์คีย์หลักในการปรับเปลี่ยนตัวเองเท่านั้น: ตั้งค่าคีย์หลักของการสืบค้นไปยังคุณสมบัติของวัตถุที่ระบุโดยพารามิเตอร์: เลือกลำดับการดำเนินการ (selected_id () keyProperty = "id" order = "หลัง" resultType = "java.lang.integer"> เลือก last_inser_id () </selectkey> แทรกลงในผู้ใช้ (ชื่อผู้ใช้, วันเกิด, เพศ, ที่อยู่) ค่า (#{ชื่อผู้ใช้},#{วันเกิด},#},#} ขั้นแรกให้รับคีย์หลักผ่าน UUID ให้ตั้งค่าคีย์หลักเป็นแอตทริบิวต์ ID ของวัตถุผู้ใช้และจากนั้นอย่างที่สองเมื่อทำการแทรกให้ลบค่าแอตทริบิวต์ ID ออกจากวัตถุผู้ใช้-> <selectKey keyProperty = "id" ord = "ก่อน" ผลลัพธ์ userern ค่า (#{ชื่อผู้ใช้},#{วันเกิด},#{sex},#{ที่อยู่}); </insert> <!-ในการลบผู้ใช้เพื่อลบผู้ใช้ตาม ID คุณต้องป้อนค่า id-> <ลบ id = "deleteUser" พารามิเตอร์ parameterType = "java.lang.integer"> ลบจากผู้ใช้ที่ id =#{id} </ลบ> <! ระบุวัตถุผู้ใช้รวมถึง ID และข้อมูลอัปเดต หมายเหตุ: ID จะต้องมีอยู่#{id}: รับค่าแอตทริบิวต์ id จากวัตถุผู้ใช้อินพุต -> <update id = "updateUser" parameterType = "cn.itcast.mybatis.po.user"> อัปเดตผู้ใช้ชื่อผู้ใช้ =#{ชื่อผู้ใช้}, วันเกิด =#{วันเกิด} </mapper> </span>ขั้นตอนที่ 5: เขียนวิธีเฉพาะดังนี้:
<span style = "Font-Family: Comic Sans MS; Font-Size: 18px;"> Package Cn.itcast.mybatis.first; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า java.util.date; นำเข้า java.util.list; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactorybuilder; นำเข้า org.junit.test; นำเข้า cn.itcast.mybatis.po.user; คลาสสาธารณะ mybatisfirst {// ข้อมูลผู้ใช้แบบสอบถามตาม ID และรับผลการบันทึก @Test โมฆะสาธารณะ FindUserByIdTest () พ่น IOException {// myBatis การกำหนดค่าสตริงสตริง = "SQLMAPCONFIG.XML"; // รับไฟล์การกำหนดค่าสตรีมสตรีม inputStream inputStream = resources.getResourceasstream (ทรัพยากร); // สร้างโรงงานเซสชันและส่งผ่านข้อมูลไฟล์การกำหนดค่า mybatis sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder () .build (inputstream); // รับ sqlsession ผ่านโรงงาน sqlsession sqlsession = sqlsessionfactory.opensession (); // ดำเนินการฐานข้อมูลผ่าน SQLSession // พารามิเตอร์แรก: ID ของคำสั่งในไฟล์แผนที่เท่ากับ = namespace+ "."+ id ของคำสั่ง // พารามิเตอร์ที่สอง: ระบุพารามิเตอร์ของประเภทพารามิเตอร์ที่จับคู่กัน sqlsession.selectone ("test.finduserbyid", 1); System.out.println (ผู้ใช้); // ปล่อยทรัพยากร sqlsession.close (); } // Fuzzy Query รายการผู้ใช้ตามชื่อผู้ใช้ @Test โมฆะสาธารณะ FindUserByNameTest () พ่น IOException {// myBatis การกำหนดค่าสตริงสตริง = "sqlmapConfig.xml"; // รับไฟล์การกำหนดค่าอินพุตสตรีม = ทรัพยากร. getResourceasstream (ทรัพยากร); // สร้างโรงงานเซสชันและส่งผ่านข้อมูลไฟล์การกำหนดค่า mybatis sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder (). build (inputstream); // รับ sqlsession ผ่านโรงงาน sqlsession sqlsession = sqlsessionfactory.opensession (); // ผู้ใช้ในรายการในรายการเหมือนกับประเภทที่ระบุโดยผลลัพธ์ของเยอรมันในรายการไฟล์การแม็พ <suser> list = sqlsession.selectList ("test.finduserbyname", "Xiao Ming"); System.out.println (รายการ); sqlsession.close (); } โมฆะสาธารณะ insertuserTest () พ่น IOException {// myBatis การกำหนดค่าไฟล์สตริงไฟล์ = "SQLMAPCONFIG"; // รับไฟล์การกำหนดค่าสตรีมสตรีม inputStream inputStream = resources.getResourceasstream (ทรัพยากร); // สร้างโรงงานเซสชันและส่งผ่านข้อมูลไฟล์การกำหนดค่า mybatis sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder (). build (inputstream); // รับ sqlsession ผ่านโรงงาน sqlsession sqlsession = sqlsessionfactory.opensession (); // แทรกผู้ใช้วัตถุผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setUserName ("Ding Guohua"); user.setBirthday (วันที่ใหม่ ()); user.setsex ("1"); user.setAddress ("anhui hefei"); // ผู้ใช้ในรายการและประเภทที่ระบุโดย ResultType ในไฟล์การแมปมักจะเป็น sqlsession.insert ("test.insertuser" ผู้ใช้); // ส่งสิ่งต่าง ๆ sqlsession.commit (); // ปิดเซสชัน sqlsession.close (); } // ลบข้อมูลผู้ใช้ตาม ID @Test โมฆะสาธารณะ DELETEESERTEST () พ่น IOException {// myBatis การกำหนดค่าไฟล์สตริงสตริง = "SQLMAPCONFIG.XML"; // รับไฟล์การกำหนดค่าสตรีมสตรีม inputStream inputStream = resources.getResourceasstream (ทรัพยากร); // สร้างโรงงานและผ่านในข้อมูลการกำหนดค่า mybatis ข้อมูลไฟล์ sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder (). build (inputstream); // รับ sqlsession ผ่านโรงงาน sqlsession sqlsession = sqlsessionfactory.opensession (); // ผ่าน ID ขาเข้าลบผู้ใช้ sqlsession.delete ("test.deleteuser", 39); // ส่งสิ่งต่าง ๆ sqlsession.commit (); // ปิดเซสชัน sqlsession.close (); } // อัปเดตข้อมูลผู้ใช้ @Test โมฆะสาธารณะ updateUserTest () พ่น IOException {// myBatis การกำหนดค่าสตริงไฟล์สตริง = "sqlmapConfig.xml"; // รับไฟล์การกำหนดค่าสตรีมสตรีม inputStream inputStream = resources.getResourceasstream (ทรัพยากร); // สร้างโรงงานเซสชันและส่งผ่านข้อมูลไฟล์การกำหนดค่า mybatis sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder () .build (inputstream); // รับ sqlsession ผ่านโรงงาน sqlsession sqlsession = sqlsessionfactory.opensession (); // อัปเดตผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); // อัปเดต id user.setId (41); user.setUserName ("Ding Guohua"); user.setBirthday (วันที่ใหม่ ()); user.setsex ("2"); user.setAddress ("anhui hefei"); sqlsession.update ("test.updateuser", ผู้ใช้); // กระทำการทำธุรกรรม sqlsession.commit (); // ปิดเซสชัน sqlsession.close (); }} </span>ข้อดีและข้อเสียของ mybatis
ข้อได้เปรียบ:
. เริ่มต้นใช้งานได้ง่ายและเป็นผู้เชี่ยวชาญ
ข. SQL เขียนใน XML ซึ่งอำนวยความสะดวกในการจัดการและเพิ่มประสิทธิภาพแบบครบวงจร
ค. decouple SQL และรหัสโปรแกรม
d. ระบุแท็กการแมปเพื่อสนับสนุนการแมปความสัมพันธ์ของฟิลด์ ORM ระหว่างวัตถุและฐานข้อมูล
ก. จัดเตรียมแท็กการแมปความสัมพันธ์ของวัตถุเพื่อรองรับการก่อสร้างและการบำรุงรักษาความสัมพันธ์ของวัตถุ
f. ให้แท็ก XML และสนับสนุนการเขียน SQL แบบไดนามิก
ข้อบกพร่อง:
. ปริมาณงาน SQL นั้นสูงมากโดยเฉพาะอย่างยิ่งเมื่อมีหลายสาขาและตารางที่เกี่ยวข้องมากมาย
ข. SQL ขึ้นอยู่กับฐานข้อมูลทำให้เกิดการพกพาฐานข้อมูลที่ไม่ดี
ค. เนื่องจากแท็ก ID ใน XML ต้องไม่ซ้ำกันวิธีการใน DAO ไม่รองรับวิธีการโอเวอร์โหลด
d. เลเยอร์ DAO นั้นง่ายเกินไปและภาระงานของชุดประกอบวัตถุค่อนข้างใหญ่
ก. การใช้แคชที่ไม่เหมาะสมสามารถสร้างข้อมูลสกปรกได้อย่างง่ายดาย
การเปรียบเทียบระหว่าง mybatis และ hibernate
ความคล้ายคลึงกัน: Hibernate และ MyBatis สามารถสร้าง SessionFactory จากไฟล์การกำหนดค่า XML ผ่าน SessionFactoryBuilder จากนั้นสร้างเซสชันจาก SessionFactroy ในที่สุดเซสชันเริ่มดำเนินการสิ่งต่าง ๆ และคำสั่ง SQL วงจรชีวิตของ SessionFactoryBuilder, SessionFactory และเซสชันเกือบจะเหมือนกัน
ความแตกต่าง:
MyBatis: เล็ก, สะดวก, มีประสิทธิภาพ, เรียบง่าย, โดยตรง, กึ่งอัตโนมัติ;
ไฮเบอร์เนต: ทรงพลังสะดวกมีประสิทธิภาพซับซ้อนสถานการณ์อัตโนมัติอย่างเต็มที่
MyBatis:
. ง่ายในการเริ่มต้นเรียนรู้และใช้งานโดยเร็วที่สุด มันมีฟังก์ชั่นการเชื่อมโยงวัตถุอัตโนมัติสำหรับการสืบค้นฐานข้อมูลและยังคงประสบการณ์การใช้งาน SQL มากมาย มันเหมาะสำหรับโครงการที่ไม่มีข้อกำหนดของโมเดลวัตถุสูงเช่นนี้
ข. การเพิ่มประสิทธิภาพ SQL โดยละเอียดเพิ่มเติมสามารถทำได้และสามารถลดฟิลด์แบบสอบถามได้
ค. ข้อเสียคือเฟรมเวิร์กยังคงค่อนข้างง่ายและฟังก์ชั่นยังคงหายไป แม้ว่ารหัสการเชื่อมโยงข้อมูลจะง่ายขึ้น แต่การสืบค้นฐานข้อมูลพื้นฐานทั้งหมดจะต้องเขียนด้วยตัวเอง แต่ภาระงานมีขนาดค่อนข้างใหญ่และไม่ใช่เรื่องง่ายที่จะปรับให้เข้ากับการปรับเปลี่ยนฐานข้อมูลอย่างรวดเร็ว
d. กลไกการแคชทุติยภูมิไม่ดี
ไฮเบอร์เนต:
. ฟังก์ชั่นที่แข็งแกร่งความไม่เกี่ยวข้องกับฐานข้อมูลที่ดีและความสามารถในการทำแผนที่ O/R ที่แข็งแกร่ง หากคุณค่อนข้างมีความเชี่ยวชาญในการจำศีลและห่อหุ้มไฮเบอร์เนตอย่างถูกต้องรหัสเลเยอร์การคงอยู่ทั้งหมดของโครงการของคุณจะค่อนข้างง่ายรหัสที่ต้องเขียนนั้นสูงมากความเร็วในการพัฒนานั้นเร็วมากและเจ๋งมาก
ข. มีกลไกการแคชรองที่ดีกว่าและสามารถใช้แคชบุคคลที่สามได้
ค. ข้อเสียคือเกณฑ์การเรียนรู้ไม่ต่ำและคุณต้องมีความเชี่ยวชาญในเรื่องนี้ วิธีการออกแบบการทำแผนที่ O/R วิธีการสร้างสมดุลระหว่างโมเดลประสิทธิภาพและวัตถุและวิธีการใช้ Hibernate Well ต้องการประสบการณ์และความสามารถของคุณที่จะแข็งแกร่ง
ให้ฉันขอคำอุปมาที่สดใส:
MyBatis: เครื่องมือเชิงกลใช้งานง่ายและสามารถใช้งานได้โดยเร็วที่สุด แต่งานยังต้องทำด้วยตัวเอง แต่เครื่องมือยังมีชีวิตอยู่ดังนั้นวิธีการทำให้พวกเขาขึ้นอยู่กับฉัน
Hibernate: หุ่นยนต์อัจฉริยะ แต่มีราคาแพงมากในการพัฒนา (การเรียนรู้ความสามารถ) และการทำงานสามารถกำจัดมันได้ แต่มีเพียงสิ่งที่ทำได้
ข้อความของบรรณาธิการ: ในโพสต์บล็อกนี้บรรณาธิการส่วนใหญ่แนะนำความรู้พื้นฐานของ mybatis โดยย่อรวมถึงการสาธิตอย่างง่าย ๆ ของการเพิ่มการลบการแก้ไขและการค้นหาข้อดีและข้อเสียของ mybatis และการเปรียบเทียบระหว่าง Hibernate และ mybatis ความเหมือนและความแตกต่างระหว่างพวกเขา MyBatis หมายถึงกรอบการคงอยู่ของเลเยอร์ MyBatis ช่วยให้โปรแกรมมุ่งเน้นไปที่ SQL และสร้างคำสั่ง SQL อย่างอิสระและยืดหยุ่นที่ตรงกับความต้องการผ่านวิธีการทำแผนที่ที่ MyBatis จัดทำขึ้น MyBatis สามารถป้อนพารามิเตอร์อินพุตเพื่อเตรียมการโดยอัตโนมัติและแมปผลลัพธ์การสืบค้นได้อย่างยืดหยุ่นลงในวัตถุ Java
ด้านบนเป็นบทช่วยสอนเบื้องต้นสำหรับภาพรวมหลักการ MyBatis ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!