คุณสมบัติ
สิ่งเหล่านี้เป็นคุณสมบัติทางเลือกภายนอกที่สามารถกำหนดค่าในไฟล์การกำหนดค่าคุณสมบัติ Java ทั่วไปหรือส่งผ่านองค์ประกอบลูกขององค์ประกอบคุณสมบัติ ตัวอย่างเช่น:
<properties resource = "org/mybatis/example/config.properties"> <property name = "ชื่อผู้ใช้" value = "dev_user"/> <property name = "รหัสผ่าน" value = "f2fa3! 33Tyyg"/> </properties >>
คุณสมบัติในนั้นสามารถใช้ได้ตลอดทั้งไฟล์การกำหนดค่าและคุณสมบัติที่เปลี่ยนได้ถูกใช้เพื่อใช้การกำหนดค่าแบบไดนามิก ตัวอย่างเช่น:
<dataSource type = "pooled"> <property name = "driver" value = "$ {driver}"/> <property name = "url" value = "$ {url}"/> <property name = "username" value = "$ {username}"
ในตัวอย่างนี้ชื่อผู้ใช้และรหัสผ่านจะถูกแทนที่ด้วยค่าที่ตั้งไว้ในองค์ประกอบคุณสมบัติ คุณสมบัติของไดรเวอร์และ URL จะถูกแทนที่ด้วยค่าที่มีอยู่ในไฟล์ config.properties
การตั้งค่า
1. Cacheenabled
การกำหนดค่านี้ช่วยให้ Mapper ทั่วโลกเปิดใช้งานหรือปิดการใช้งานแคช
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: จริง
2. lazyloadingenabled
เปิดใช้งานหรือปิดการใช้งานขี้เกียจทั่วโลก เมื่อปิดใช้งานวัตถุที่เกี่ยวข้องทั้งหมดจะถูกโหลดทันที
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: จริง
3.Aggressivelazyloading
เมื่อเปิดใช้งานวัตถุที่มีคุณสมบัติการโหลดล่าช้าจะโหลดคุณสมบัติใด ๆ อย่างสมบูรณ์เมื่อเรียก มิฉะนั้น,
แต่ละแอตทริบิวต์จะถูกโหลดตามต้องการ
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: จริง
4. MULT IPLERESULTSETSENABLED
อนุญาตหรือไม่อนุญาตให้ชุดผลลัพธ์หลายชุดส่งคืนจากคำสั่งแยกต่างหาก (ต้องการไดรเวอร์ที่เหมาะสม)
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: จริง
5. USECOLUMNLABEL
ใช้คอลัมน์ป้ายกำกับแทนชื่อคอลัมน์ ไดรเวอร์ที่แตกต่างกันนั้นสะดวกสำหรับการแสดงที่แตกต่างกัน อ้างถึงเอกสารประกอบของไดรเวอร์หรือทดสอบวิธีการทั้งหมดเพื่อกำหนดไดรเวอร์ที่ใช้
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: จริง
6. ผู้ใช้งาน GeneratedKeys
อนุญาตให้ JDBC รองรับคีย์ที่สร้างขึ้น ต้องการไดรฟ์ที่เหมาะสม หากตั้งค่าเป็นจริงการตั้งค่านี้บังคับให้ใช้คีย์ที่สร้างขึ้นและแม้ว่าไดรเวอร์บางตัวจะปฏิเสธที่จะเข้ากันได้ แต่ก็ยังคงถูกต้อง (เช่นดาร์บี้)
ค่าที่ถูกต้อง: จริงเท็จ
ค่าเริ่มต้น: เท็จ
7. AuutomappingBehavior
ระบุวิธีที่ mybatis แมปคอลัมน์กับฟิลด์/แอตทริบิวต์โดยอัตโนมัติ บางส่วนจะแมปโดยอัตโนมัติโดยอัตโนมัติและไม่มีผลลัพธ์ซ้อนกัน
เต็มจะแมปผลลัพธ์ที่ซับซ้อนโดยอัตโนมัติ (คอหรืออื่น ๆ ) โดยอัตโนมัติ
ค่าที่ถูกต้อง: ไม่มีบางส่วนเต็ม
ค่าเริ่มต้น: บางส่วน
8.DefaultExecutortype
กำหนดค่า Concutor เริ่มต้น ไม่มีอะไรพิเศษเกี่ยวกับแอคชูเอเตอร์ที่เรียบง่าย ผู้ดำเนินการนำกลับมาใช้ซ้ำคำสั่งประมวลผลล่วงหน้า
คำสั่งนำมาใช้ซ้ำแบทช์และการอัปเดตแบบแบทช
ค่าเริ่มต้น: ง่าย
9.DefaultStatementTimeOut
ตั้งค่าเวลาหมดเวลาซึ่งกำหนดเวลาที่ไดรเวอร์รอการตอบกลับฐานข้อมูล
ค่าที่ถูกต้อง: ใด ๆ , บวก, จำนวนเต็ม
ค่าเริ่มต้น: ไม่ได้ตั้งค่า (NULL)
ตัวอย่างของการตั้งค่าองค์ประกอบข้อมูลการกำหนดค่าที่สมบูรณ์มีดังนี้:
<การตั้งค่า> <การตั้งค่าชื่อ = "cacheenabled" value = "true"/> <การตั้งค่าชื่อ = "lazyloadingenabled" value = "true"/> <การตั้งค่าชื่อ = "MultipleSultSetSenabled" value = "true"/> <การตั้งค่า = "usecolumnLabel" value = "true"/> value = "false"/> <การตั้งค่าชื่อ = "defaultExecUtOsterpe" value = "simple"/> <setting name = "defaultStatementTimeOut" value = "25000"/> </settings>
typealiases
นามแฝงประเภทคือการตั้งชื่อชื่อสั้น ๆ สำหรับประเภท Java มันเกี่ยวข้องกับการกำหนดค่า XML เท่านั้นและใช้เพื่อลดส่วนที่ซ้ำซ้อนของชื่อที่มีคุณสมบัติครบถ้วนของคลาส ตัวอย่างเช่น:
<typealias alias = "ผู้แต่ง" type = "domain.blog.author"/> <typealias alias = "blog" type = "domain.blog.blog"/> <typealias alias = "comment" type = "domain.blog.comment"/> type = "domain.blog.section"/> <typealias alias = "tag" type = "domain.blog.tag"/> </ypealias>
ด้วยการกำหนดค่านี้ "บล็อก" สามารถใช้เป็นโดยพลการแทนที่จะใช้ "domain.blog.blog" โดยพลการ สำหรับประเภท Java ปกติมีนามแฝงประเภทในตัว พวกเขาเป็นทั้งตัวพิมพ์ใหญ่และเนื่องจากชื่อที่โอเวอร์โหลดคุณควรให้ความสนใจกับการจัดการประเภทพื้นเมืองพิเศษ
ผู้เล่น
ไม่ว่า MyBatis จะตั้งค่าพารามิเตอร์ในคำสั่งการประมวลผลล่วงหน้าหรือใช้ค่าจากชุดผลลัพธ์ตัวประมวลผลประเภทจะใช้ในการแปลงค่าที่ได้รับเป็นประเภท Java ในวิธีที่เหมาะสม ตารางต่อไปนี้อธิบายตัวประมวลผลประเภทเริ่มต้น
คุณสามารถเขียนโปรเซสเซอร์ประเภทใหม่หรือสร้างโปรเซสเซอร์ประเภทของคุณเองเพื่อจัดการประเภทที่ไม่ได้รับการสนับสนุนหรือไม่ได้มาตรฐาน แต่สถานการณ์นี้ค่อนข้างหายาก! -
ObjectFactory
MyBatis ทำได้โดยใช้อินสแตนซ์ ObjectFactory ทุกครั้งที่มีการสร้างอินสแตนซ์ใหม่ของวัตถุผลลัพธ์ หากแผนที่พารามิเตอร์มีอยู่วัตถุเริ่มต้นจะไม่ทำงานมากกว่าการสร้างอินสแตนซ์คลาสเป้าหมายโดยใช้ตัวสร้างเริ่มต้นหรือตัวสร้างที่มีพารามิเตอร์ หากคุณต้องการเขียน ObjectFactory เริ่มต้นใหม่คุณสามารถสร้างของคุณเองได้ ตัวอย่างละเว้น
ปลั๊กอิน
MyBatis ช่วยให้คุณสกัดกั้นการโทรที่ดำเนินการโดยคำสั่งที่แมป ณ จุดหนึ่ง โดยค่าเริ่มต้น MyBatis อนุญาตให้ปลั๊กอินสามารถสกัดกั้นการโทรวิธี:
1. ผู้สอน
(อัปเดต, สอบถาม, flushstatements, commit, ย้อนกลับ, getTransaction, close, isClose)
2. พารามิเตอร์แฮนด์เลอร์
(getParameterObject, setParameters)
3. resultsethandler
(HandlerEsultSets, HandleOutputParameters)
4. StatementHandler
(เตรียม, พารามิเตอร์, แบทช์, อัปเดต, สอบถาม)
สภาพแวดล้อม
MyBatis สามารถกำหนดค่าได้ด้วยสภาพแวดล้อมที่หลากหลาย สิ่งนี้จะช่วยให้คุณใช้การแมป SQL กับฐานข้อมูลหลายฐานข้อมูล
คำถามที่สำคัญมากที่ต้องจำ: คุณสามารถกำหนดค่าสภาพแวดล้อมที่หลากหลาย แต่คุณสามารถเลือกคำถามสำหรับแต่ละอินสแตนซ์ SQLSessionFactory แต่ละตัวเท่านั้น ดังนั้นหากคุณต้องการเชื่อมต่อกับฐานข้อมูลสองฐานคุณต้องสร้างอินสแตนซ์ SQLSessionFactory สองตัวหนึ่งตัวสำหรับแต่ละฐานข้อมูล และถ้าเป็นสามฐานข้อมูลคุณต้องมีสามอินสแตนซ์และอื่น ๆ
องค์ประกอบสภาพแวดล้อมกำหนดวิธีกำหนดค่าสภาพแวดล้อมตัวอย่างเช่น:
<environment default = "การพัฒนา"> <environment id = "การพัฒนา"> <transactionManager type = "jdbc"> <property name = "... " value = "... "/> </transactionManager> value = "$ {ชื่อผู้ใช้}"/> <property name = "รหัสผ่าน" value = "$ {รหัสผ่าน}"/> </dataSource> </environment> </environments> หมายเหตุที่นี่:
1. รหัสสภาพแวดล้อมเริ่มต้น (ตัวอย่างเช่น: default = "การพัฒนา")
2. รหัสสภาพแวดล้อมที่กำหนดโดยแต่ละองค์ประกอบสภาพแวดล้อม (ตัวอย่างเช่น: id =” การพัฒนา”)
3. การกำหนดค่าการทำธุรกรรมตัวจัดการ (ตัวอย่างเช่น: type = "JDBC")
4. การกำหนดค่าแหล่งข้อมูล (ตัวอย่างเช่น: type = "pooled")
TransactionManager
ผู้จัดการธุรกรรมมีสองประเภทใน mybatis (เช่น type = "[JDBC | จัดการ]"
1.JDBC --- การกำหนดค่านี้โดยตรงและใช้การตั้งค่าการประชุมและการย้อนกลับของ JDBC มันขึ้นอยู่กับการเชื่อมต่อที่ได้จากแหล่งข้อมูลเพื่อจัดการขอบเขตการทำธุรกรรม
2. จัดการ --- การกำหนดค่านี้แทบไม่มีอะไรเลย มันไม่เคยกระทำหรือย้อนกลับการเชื่อมต่อ และช่วยให้คอนเทนเนอร์สามารถจัดการวงจรชีวิตทั้งหมดของธุรกรรม (เช่นบริบทของสปริงหรือเซิร์ฟเวอร์แอปพลิเคชัน JEE) โดยค่าเริ่มต้นจะปิดการเชื่อมต่อ อย่างไรก็ตามคอนเทนเนอร์บางตัวไม่ต้องการสิ่งนี้ดังนั้นหากคุณต้องการหยุดจากการเชื่อมต่อให้ตั้งค่าคุณสมบัติ closeconnection เป็นเท็จ ตัวอย่างเช่น:
<transactionManager type = "managed"> <property name = "closeconnection" value = "false"/> </romanactionManager>
ตัวจัดการธุรกรรมไม่ต้องการคุณสมบัติใด ๆ อย่างไรก็ตามพวกเขาเป็นนามแฝงประเภททั้งหมดและเพื่อแทนที่พวกเขาคุณต้องวางชื่อหรือนามแฝงที่มีคุณสมบัติครบถ้วนของคุณเองในชั้นเรียนของคุณเองซึ่งอ้างอิงคลาสการใช้งานของคุณสำหรับอินเทอร์เฟซ transacfactory