รู้เบื้องต้นเกี่ยวกับ mybatis
MyBatis เป็นโครงการโอเพ่นซอร์สของ Apache ในปี 2010 โครงการนี้ถูกย้ายจาก Apache Software Foundation เป็น Google Code และถูกเปลี่ยนชื่อ MyBatis รองรับเฟรมเวิร์กเลเยอร์การคงอยู่ที่ยอดเยี่ยมสำหรับการสืบค้น SQL ทั่วไปขั้นตอนที่เก็บไว้และการทำแผนที่ขั้นสูง MyBatis กำจัดการตั้งค่าด้วยตนเองของรหัส JDBC และพารามิเตอร์เกือบทั้งหมดและค้นหาชุดผลลัพธ์ MyBatis ใช้ XML อย่างง่ายหรือคำอธิบายประกอบสำหรับการกำหนดค่าและการแมปดั้งเดิมเพื่อแมปอินเทอร์เฟซและ pojos ของ Java (วัตถุ Java เก่าธรรมดา) ลงในบันทึกในฐานข้อมูล
รู้เบื้องต้นเกี่ยวกับ mybatis interceptor
MyBatis มีฟังก์ชั่นปลั๊กอิน แม้ว่ามันจะเรียกว่าปลั๊กอิน แต่จริงๆแล้วมันเป็นฟังก์ชัน interceptor MyBatis ช่วยให้คุณสกัดกั้นการโทร ณ จุดหนึ่งระหว่างการดำเนินการของคำสั่งที่แมป MyBatis ให้อินเทอร์เฟซ Interceptor โดยการใช้อินเทอร์เฟซนี้เราสามารถกำหนด interceptor ของเราเองได้
MyBatis เรียกวิธีการสี่ประเภทโดยค่าเริ่มต้น:
1.Executor (อัปเดต, สอบถาม, flushstatements, commit, ย้อนกลับ, getTransaction, close, isClose)
2. ParameterHandler (getParameterObject, setParameters)
3.ResultSethandler (HandlerEsultSets, HandleOutputParameters)
4. StatementHandler (เตรียมการพารามิเตอร์แบทช์อัปเดตการสืบค้น)
4 ข้างต้นเป็นวิธีการกำหนดค่าทั้งหมด วิธีการเหล่านี้จะถูกดำเนินการในการดำเนินการของ mybatis (เพิ่มลบแก้ไขและสอบถาม) ลำดับของการดำเนินการคือผู้ดำเนินการ, พารามิเตอร์ handler, resultsethandler และ attementhandler
คำจำกัดความของอินเทอร์เฟซคือ:
ในสามวิธีนี้ปลั๊กอินใช้สำหรับการสร้างโปรเซสเซอร์การสกัดกั้นใช้สำหรับการจัดการคลาสพร็อกซีและการตั้งค่าคุณสมบัติการสกัดกั้นคำศัพท์
คลาสปลั๊กอินใช้อินเทอร์เฟซ InvocationHandler และส่งคืนคลาสพร็อกซีแบบไดนามิกของ JDK สำหรับวิธีการห่อของปลั๊กอิน:
ตรวจสอบว่าวัตถุเป้าหมายปัจจุบันมีอินเทอร์เฟซที่ต้องสกัดกั้นหรือไม่ ถ้าไม่มันจะส่งคืนวัตถุเป้าหมายเองและถ้ามีมันจะส่งคืนวัตถุพร็อกซี
InvocationHandler ของวัตถุพร็อกซีคือปลั๊กอิน เมื่อวัตถุเป้าหมายดำเนินการเมธอดอินเตอร์เฟสหากถูกดำเนินการผ่านวัตถุพร็อกซีวิธีการเรียกใช้ของ InvocationHandler จะถูกเรียกซึ่งเป็นวิธีการเรียกใช้ปลั๊กอิน:
หากวิธีการที่ดำเนินการในปัจจุบันเป็นวิธีการที่กำหนดไว้ซึ่งจำเป็นต้องมีการสกัดกั้นวัตถุเป้าหมายวิธีการที่จะดำเนินการและพารามิเตอร์เมธอดจะถูกห่อหุ้มลงในวัตถุการเรียกร้องและการเรียกใช้ที่ห่อหุ้มจะถูกส่งผ่านเป็นพารามิเตอร์ไปยังวิธีการสกัดกั้นของการดักจับปัจจุบัน หากไม่จำเป็นต้องสกัดกั้นวิธีการปัจจุบันจะเรียกโดยตรง
สำหรับวิธี getSignatureMap
GetSignatureMap จะได้รับคำอธิบายประกอบการสกัดกั้นของการสกัดกั้นก่อนที่จะได้รับแอตทริบิวต์ประเภทจากนั้นรับวิธีการด้วยแอตทริบิวต์วิธีการและแอตทริบิวต์ ARGS ตามประเภทนี้ ตัวอย่าง: การกรองวิธีการอัปเดตของ Executor.CLASS จะสร้างคีย์เป็น ExecUtro และค่าเป็นอินสแตนซ์วิธีการโดยมีพารามิเตอร์ที่สอดคล้องกับวิธีการ MappedStatement และวิธีการ
การกำหนดค่าการสกัดกั้น: