MyBatis-Spring ช่วยให้คุณสามารถฉีดแมปเข้าสู่ถั่วบริการ เมื่อใช้ Mapper มันก็โอเคที่จะเรียกผู้ทำแผนที่เช่นเดียวกับการโทรหา Dao แต่ในเวลานี้คุณไม่จำเป็นต้องเข้ารหัสการใช้งาน DAO ใด ๆ เพราะ mybatis จะทำเพื่อคุณ
ด้วย Mapper ที่ฉีดรหัสของคุณจะไม่มีการพึ่งพา mybatis-spring และการพึ่งพา mybatis มีแผนที่ง่าย ๆ ในแอปพลิเคชันของเรา คุณควรรู้ด้วยว่า Mapper เป็นเพียงอินเทอร์เฟซ:
อินเทอร์เฟซสาธารณะ usermapper {ผู้ใช้ getUser (String userId); -นี่คือวิธีที่คุณใช้ mybatis-spring เพื่อสร้าง mappers:
<bean id = "usermapper"> <property name = "sqlsessionfactory" ref = "sqlsessionfactory" /> <property name = "mapperinterface" value = "sample.usermapper" /> </ebean>
ตอนนี้ Mapper ของคุณพร้อมที่จะฉีดเข้าไปในวัตถุบริการ:
<bean id = "fooservice"> <property name = "usermapper" ref = "usermapper"/> </ebean>
หมายเหตุ: ชื่อคลาสเต็มของอินเทอร์เฟซ Mapper สอดคล้องกับเนมสเปซของไฟล์การกำหนดค่า Mapper XML
เกี่ยวกับ mapperfactorybean
คลาสพร็อกซีที่สร้างขึ้นโดย MapperFactoryBean ใช้อินเทอร์เฟซ Mapper (เช่นในตัวอย่างด้านบน: USERMApper) และถูกฉีดเข้าไปในแอปพลิเคชัน เนื่องจากเอเจนต์ถูกสร้างขึ้นในสภาพแวดล้อมการเรียกใช้แผนที่ที่ระบุจะต้องเป็นอินเทอร์เฟซ แทนที่จะเป็นคลาสการใช้งานที่เป็นรูปธรรม
ไม่จำเป็นต้องลงทะเบียน mappers ทั้งหมดในไฟล์การกำหนดค่า XML ของฤดูใบไม้ผลิ แต่คุณสามารถใช้ MappersCannerConfigurer ซึ่งจะมองหา Mappers ภายใต้ classPath และสร้างพวกเขาเป็น MapperFactoryBeans โดยอัตโนมัติ ในการสร้าง MappersCannerConfigurer คุณสามารถเพิ่มรหัสต่อไปนี้ในการกำหนดค่าของ Spring:
<bean> <propery name = "basepackage" value = "org.mybatis.spring.sample.mapper"/> </ebean>
คุณสมบัติ BasePackage ช่วยให้คุณสามารถตั้งค่าพา ธ แพ็คเกจพื้นฐานสำหรับไฟล์อินเทอร์เฟซ Mapper คุณสามารถตั้งค่าแพ็คเกจมากกว่าหนึ่งเส้นทางโดยใช้เครื่องหมายอัฒภาคหรือเครื่องหมายจุลภาคเป็นตัวคั่น แผนที่แต่ละตัวจะถูกค้นหาซ้ำในเส้นทางแพ็คเกจที่ระบุ
โปรดทราบว่าไม่จำเป็นต้องระบุ SQLSessionFactory หรือ SQLSessionTemplate เนื่องจาก MappersCannerConfigurer จะสร้าง MapperFactoryBean แล้วประกอบโดยอัตโนมัติ อย่างไรก็ตามหากคุณใช้แหล่งข้อมูลมากกว่าหนึ่งแหล่ง (และดังนั้น SQLSessionFactory หลายตัว) การประกอบอัตโนมัติอาจล้มเหลว ในกรณีนี้คุณสามารถใช้คุณสมบัติ SQLSessionFactory หรือ SQLSessionTemplate เพื่อตั้งค่าโรงงาน/เทมเพลตที่ถูกต้อง
MappersCannerConfigurer รองรับการกรองเพื่อสร้าง mappers โดยอินเทอร์เฟซการสร้างที่ระบุหรือคำอธิบายประกอบ คุณสมบัติ AnnotationClass ระบุชื่อคำอธิบายประกอบที่จะค้นหา คุณสมบัติ MarkerInterface ระบุอินเทอร์เฟซพาเรนต์ที่จะค้นหา หากมีการระบุทั้งสองตัว Mapper ที่เพิ่มเข้ากับอินเตอร์เฟสจะตรงกับเกณฑ์ทั้งสอง โดยค่าเริ่มต้นคุณสมบัติทั้งสองเป็นโมฆะดังนั้นอินเทอร์เฟซทั้งหมดที่ให้ไว้ในแพ็คเกจพื้นฐานสามารถโหลดเป็นตัวแปรได้
Mapper ที่ค้นพบจะถูกตั้งชื่อโดยใช้นโยบายการตั้งชื่อเริ่มต้นของ Spring สำหรับส่วนประกอบการตรวจจับอัตโนมัติ นั่นคือหากไม่พบคำอธิบายประกอบจะใช้ชื่อคลาสคลาสที่ไม่ผ่านการรับรองของ Mapper แต่ถ้าคุณพบ @component หรือ jsr-330 @ชื่อคำอธิบายประกอบมันจะได้รับชื่อ