ไม่จำเป็นต้องพูดประโยชน์ของการเรียนรู้ซอร์สโค้ดมีขนาดเล็กและเรียบง่ายในตรรกะดังนั้นฉันจะเขียนชุดบทความเพื่อเรียนรู้
SQLSESSION
พอร์ทัลการใช้งาน MyBatis ตั้งอยู่ใน SQLSession ในแพ็คเกจ org.apache.ibatis.session พบว่ามันเป็นอินเทอร์เฟซและจะต้องมีคลาสการใช้งานเริ่มต้นเริ่มต้นการเริ่มต้นในแพ็คเกจ org.apache.ibatis.session.defaults เราไม่เคยใหม่คลาสนี้และตามอนุสัญญา Java ใช้วิธีการโรงงานใน SQLSessionFactory ฉันพบว่ามันเป็นอินเทอร์เฟซดังนั้นจะต้องมีคลาสการใช้งานเริ่มต้นเริ่มต้นเริ่มต้น คลาสนี้ยังไม่จำเป็นต้องสร้างขึ้นด้วยตัวเองและใช้วิธีการโรงงานใน SQLSessionFactoryBuilder
defaultSqlSession
วิธีการหลักในค่าเริ่มต้น SQLSession:
1) เคอร์เซอร์ <T> SelectCursor (คำสั่งสตริง, พารามิเตอร์วัตถุ, Rowbounds Rowbounds), มอบหมายให้ Executor.QueryCursor (MS, WrapCollection (พารามิเตอร์), Rowbounds)
2) รายการ <e> selectList (คำสั่งสตริง, พารามิเตอร์วัตถุ, Rowbounds Rowbounds) และ Void Select (คำสั่งสตริง, พารามิเตอร์วัตถุ, Rowbounds Rowbounds, Resulthandler Handler) และมอบหมายให้ Executor.Query (MS, WrapCollection (พารามิเตอร์)
3) การอัปเดต int (คำสั่งสตริง, พารามิเตอร์วัตถุ), มอบหมายให้ exenuutor.update (MS, WrapCollection (พารามิเตอร์))
จะเห็นได้ว่ามีผู้บริหารที่จะทำให้เสร็จในที่สุด
ผู้บริหาร
Executor อยู่ในแพ็คเกจ org.apache.ibatis.executor มันเป็นอินเทอร์เฟซ คลาสการใช้งานคือ baseexecutor และ cachingexecutor ในหมู่พวกเขา Baseexecutor เป็นนามธรรมและมีสามคลาสย่อย SimpleExecutor, Reuseexecutor และ Batchexecutor ดูชื่อและรู้ถึงความหมาย วิธีการหลักใน baseexecutor:
1) รายการ <e> แบบสอบถาม (MappedStatement MS, พารามิเตอร์วัตถุ, Rowbounds Rowbounds, Resulthandler Resulthandler, Cachekey Key, Boundsql Boundsql) และรายการ <e> queryFromDatabase ได้รับมอบหมายให้เป็นนามธรรม <E> รายการ <E> doQuery (MappedStatement MS, พารามิเตอร์วัตถุ, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundSQL BoundSQL)
2) เคอร์เซอร์ <e> QueryCursor (MappedStatement MS, พารามิเตอร์วัตถุ, แถวแถวแถว), มอบหมายให้เป็นนามธรรม <e> เคอร์เซอร์ <e> DoqueryCursor (MappedStatement MS, พารามิเตอร์วัตถุ
3) Int Update (MappedStatement MS, พารามิเตอร์วัตถุ), มอบหมายให้เป็นนามธรรม Int Doupdate (MappedStatement MS, พารามิเตอร์วัตถุ)
คลาสฐานประมวลผลส่วนสาธารณะปล่อยให้การใช้งาน subclass
มาดูวิธีการหลักใน SimpleExecutor:
1) รายการ <e> doQuery (MappedStatement MS, พารามิเตอร์วัตถุ, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundSQL BoundSQL), มอบหมายให้ Handler <E> แบบสอบถาม (STMT, ResulThandler)
2) เคอร์เซอร์ <e> DoqueryCursor (MappedStatement MS, พารามิเตอร์วัตถุ, แถวแถวแถว, BoundSQL BoundSQL), ได้รับความไว้วางใจจาก Handler. <e> QueryCursor (STMT)
3) int doupdate (MappedStatement MS, พารามิเตอร์วัตถุ), มอบหมายให้ handler.update (STMT)
จะเห็นได้ว่าในที่สุดมันก็จัดการโดยผู้ดูแล
คำแถลงแฮนด์เลอร์
คำชี้แจง Handler ตั้งอยู่ในแพ็คเกจ org.apache.ibatis.executor.statement มันเป็นอินเทอร์เฟซ คลาสการใช้งานคือ basestatementhandler และ routingstatementhandler BasestatementHandler เป็นนามธรรมและมีสามคลาสย่อยที่ง่ายที่สุดในการขายข้อมูล handler, PreadsStatementHandler และ CallablestatementHandler ทั้งสามนี้ควรคุ้นเคยและควรจัดการคำสั่ง SQL โดยไม่มีพารามิเตอร์คำสั่ง SQL ที่กำหนดพารามิเตอร์และขั้นตอนที่เก็บไว้ตามลำดับ มาดูวิธีการหลักใน SimplestatementHandler:
1) รายการ <e> แบบสอบถาม (คำสั่งคำสั่ง resulthandler resulthandler), มอบหมายให้คำสั่ง execute (SQL)
2) เคอร์เซอร์ <e> QueryCursor (คำสั่ง), มอบหมายให้คำสั่ง execute (SQL)
3) Int Update (คำสั่งคำสั่ง), มอบหมายให้ attement.execute (SQL)
ในที่สุด SQL จะถูกดำเนินการโดยคำสั่ง สิ่งนี้จะกลับไปที่แพ็คเกจ Java.sql
MyBatis ส่วนใหญ่เสร็จสิ้นการประมวลผลการห่อหุ้มของพารามิเตอร์ SQL ได้รับชุดผลลัพธ์และสร้างวัตถุและออกจากกระบวนการก่อสร้างของคำสั่ง SQL ให้กับผู้ใช้ ผู้เขียน MyBatis ออกแบบด้วยวิธีนี้ แม้ว่าเฟรมเวิร์กจะเป็นแบบกึ่งอัตโนมัติโดยรวม แต่ความยืดหยุ่นก็เพิ่มขึ้นอย่างมาก