1. บทนำและการกำหนดค่า MyBatis+Spring+MySQL
1.1 บทนำสู่ MyBatis
MyBatis เป็นกรอบการคงอยู่ของเลเยอร์ที่สามารถปรับแต่ง SQL ขั้นตอนที่เก็บไว้และการแมปขั้นสูง MyBatis กำจัดรหัส JDBC ส่วนใหญ่การตั้งค่าพารามิเตอร์ด้วยตนเองและการดึงชุดผลลัพธ์ MyBatis ใช้เพียง XML และคำอธิบายประกอบง่ายๆเพื่อกำหนดค่าและแมปชนิดข้อมูลพื้นฐานอินเทอร์เฟซแผนที่และ POJOs ไปยังบันทึกฐานข้อมูล เมื่อเทียบกับโซลูชัน ORM "แบบครบวงจร" เช่นไฮเบอร์เนตและ Apache OJB, MyBatis เป็น "การใช้งานแบบกึ่งอัตโนมัติ"
แพ็คเกจ JAR ที่ต้องใช้: MyBatis-3.0.2.jar (แพ็คเกจ Mybatis Core) MyBatis-spring-1.0.0.jar (รวมกับฤดูใบไม้ผลิ)
ดาวน์โหลดที่อยู่:
http://ibatis.apache.org/tools/ibator
http://code.google.com/p/mybatis/
1.2MyBatis+Spring+MySQL การกำหนดค่าง่าย ๆ
1.2.1 สร้างสภาพแวดล้อมฤดูใบไม้ผลิ
(1) สร้างโครงการเว็บ Maven;
(2) เพิ่มเฟรมเวิร์กสปริงและไฟล์การกำหนดค่า
(3) เพิ่มแพ็คเกจขวดที่จำเป็น (กรอบสปริง, mybatis, mybatis-spring, junit ฯลฯ ) ไปยัง pom.xml;
(4) เปลี่ยนไฟล์การกำหนดค่าของ web.xml และฤดูใบไม้ผลิ
(5) เพิ่มหน้า JSP และคอนโทรลเลอร์ที่เกี่ยวข้อง
(6) ทดสอบ
สำหรับการอ้างอิง: http://limingnihao.iteye.com/blog/830409 สร้างโครงการ SpringMVC ด้วย Maven จาก Eclipse
1.2.2 การสร้างฐานข้อมูล MySQL
สร้างฐานข้อมูลการจัดการการเลือกหลักสูตรนักเรียน
ตาราง: ตารางนักเรียน, ตารางชั้นเรียน, ตารางครู, ตารางหลักสูตร, ตารางหลักสูตรนักเรียน
ความสัมพันธ์เชิงตรรกะ: นักเรียนแต่ละคนมีชั้นเรียน แต่ละชั้นเรียนสอดคล้องกับครูชั้นเรียน ครูแต่ละคนสามารถเป็นครูสอนชั้นเรียนของชั้นเรียนเดียวเท่านั้น
ใช้ SQL ต่อไปนี้เพื่อสร้างฐานข้อมูลก่อนสร้างตารางนักเรียนและแทรกข้อมูล (มากกว่า 2 รายการ)
สำหรับ SQL เพิ่มเติมโปรดดาวน์โหลดไฟล์แหล่งที่มาโครงการใน Resource/SQL
/* สร้างฐานข้อมูล*/ สร้างฐานข้อมูล student_manager; ใช้ student_manager; / ***** สร้างตารางนักเรียน *****/ สร้าง Table Student_tbl (Student_id Varchar (255) คีย์หลัก, student_name varchar (10) ไม่ใช่ null, student_sex varchar (10), วันที่ของนักเรียน _birthday, class_id varchar (255)); /*แทรกข้อมูลนักเรียน*/ แทรกลงใน student_tbl (student_id, student_name, student_sex, student_birthday, class_id) ค่า (123456, 'xxx', 'หญิง', '1980-08-01', 121546)
สร้างไฟล์กำหนดค่า mysql.properties ที่ใช้ในการเชื่อมต่อกับ MySQL
jdbc.DriverClassName = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: // localhost: 3306/student_manager? user = root & password = limingnihao & useunicode = true & clacterencoding = UTF-8
1.2.3 สร้างสภาพแวดล้อม mybatis
คำสั่งซื้อไม่เป็นทางการและคำสั่งซื้อปัจจุบันเป็นเพราะคุณสามารถแก้ไขไฟล์ที่เขียนได้น้อยที่สุด
1.2.3.1 สร้างคลาสเอนทิตี: Studententity
นักเรียนชั้นเรียนสาธารณะใช้งาน Serializable {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 3096154202413606831L; ความเป็นส่วนตัวของชนชั้นกลาง; วันที่นักเรียนวันเกิด; String Private StressId; String Private String ชื่อนักเรียน; String Private String เซ็กซ์; Public Classentity getClassEntity () {return classEntity; } วันที่สาธารณะ getStudentBirthday () {return studentbirthday; } สตริงสาธารณะ getStudentId () {return studentId; } สตริงสาธารณะ getStudentName () {return studentName; } สตริงสาธารณะ getStudentSex () {return studentsex; } โมฆะสาธารณะ setClassEntity (classEntity classEntity) {this.classEntity = classEntity; } โมฆะสาธารณะ setStudentBirthday (วันที่นักศึกษาวันเกิด) {this.studentBirthday = studentBirthday; } โมฆะสาธารณะ setStudentId (String studentId) {this.studentId = studentId; } โมฆะสาธารณะ setStudentName (String studentName) {this.studentName = studentName; } โมฆะสาธารณะ setStudentSex (String studentSex) {this.studentSex = studentSex; - 1.2.3.2 สร้างอินเทอร์เฟซการเข้าถึงข้อมูล
อินเทอร์เฟซ DAO ที่สอดคล้องกันของชั้นเรียนนักเรียน: StudentMapper
Public Interface StudentMapper {Public Studententity GetStudent (String StudentId); Public Studententity GetStudentandClass (String StudentID); รายการสาธารณะ <TudentEntity> getStudentAll (); ช่องว่างสาธารณะแทรก (เอนทิตีของนักเรียน); โมฆะสาธารณะ DELETESTUDENT (เอนทิตีของนักเรียน); โมฆะสาธารณะ updatestudent (เอนทิตีของนักเรียน); -1.2.3.3 สร้างไฟล์คำสั่งการแมป SQL
นักเรียนชั้นเรียน SQL FILE FILE StudentMapper.xml
แท็กผลลัพธ์: การแมปของฟิลด์ตารางและแอตทริบิวต์
เลือกแท็ก: Query SQL
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "com.manager.data.studentMapper"> <resultmap type = "StudentEntity" id = "StudentResultMap"> <id Property = "StudentId" คอลัมน์ = "Student_id"/> <result property = "studentName" studentName " column = "student_birthday"/> </resultmap> <!-สอบถามนักเรียนตาม ID-> <select id = "getStudent" parameterType = "string" resultType = "studententity" resudentStudent {studentresmid รายการ-> <select id = "getStudentAll" resultType = "com.Manager.data.model.studententity" resultmap = "StudentResultMap"> <! 1.2.3.4 สร้างไฟล์กำหนดค่า MyBatis Mapper
สร้างไฟล์การกำหนดค่า mybatis ใน SRC/Main/Resource: MyBatis-Config.xml
Typealiases Tag: ให้นามแฝงนามแฝง คลาส com.manager.data.model.studententity สามารถใช้แทนความเป็นนักเรียนได้
แท็ก Mappers: โหลดไฟล์คำสั่งการแมป SQL ของคลาสเอนทิตีใน MyBatis
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! การกำหนดค่า doctype สาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" type = "com.manager.data.model.studententity"/> </typealiases> <mappers> <mapper resource = "com/manager/data/maps/studentmapper.xml"/> </apers>
1.2.3.5 แก้ไขไฟล์การกำหนดค่าของสปริง
ส่วนใหญ่จะเพิ่มถั่วของคลาสโรงงานผลิตของ SQLSession: SQLSessionFactoryBean (ในแพ็คเกจ mybatis.spring) ต้องระบุตำแหน่งไฟล์กำหนดค่าและแหล่งข้อมูล
การใช้งานถั่วที่สอดคล้องกับอินเทอร์เฟซการเข้าถึงข้อมูล สร้างผ่าน MapperFactoryBean มีความจำเป็นที่จะต้องเรียกใช้ชื่อเต็มของคลาสอินเตอร์เฟสและการอ้างอิงไปยังถั่วโรงงาน SQLSession
<!-นำเข้าไฟล์การกำหนดค่าคุณสมบัติ-> <บริบท: สถานที่ตั้งสถานที่ตั้งตำแหน่ง = "classpath: mysql.properties" /> <bean id = "dataSource"> <property name = "driverclassName" value = "$ {jdbc.driverclassName}" /> id = "transactionManager"> <property name = "dataSource" ref = "dataSource" /> </ebean> <bean id = "sqlsessionfactory"> <property name = "configlocation" value = "classpath: mybatis-config.xml" /> id = "studentmapper"> <property name = "mapperinterface" value = "com.manager.data.studentMapper" /> <property name = "sqlsessionfactory" ref = "sqlsessionfactory" /> </epean> นอกจากนี้คุณยังไม่สามารถกำหนดถั่ว Mapper ใช้คำอธิบายประกอบได้:
เพิ่ม StudentMapper เพื่อเพิ่มความคิดเห็น
@Repository @Transactional Public Interface StudentMapper {}ความต้องการที่สอดคล้องกันคือการเพิ่มการสแกนใน dispatcher-servlet.xml:
<bean> <property name = "AnnotationClass" value = "org.springframework.stereotype.repository"/> <property name = "basepackage" value = "com.liming.Manager"/> <property name = "SQLSessionFactory" ref = "SQLSessionFactory
1.2.4 ทดสอบ StudentMapper
ใช้การทดสอบ SpringMVC เพื่อสร้าง testController กำหนดค่า TOMCAT และเข้าถึงหน้าดัชนี DO สำหรับการทดสอบ:
@Controller ชั้นเรียนสาธารณะ TestController {@AutoWired Private StudentMapper StudentMapper; @RequestMapping (value = "index.do") public void indexpage () {entity entity studententity = studentmapper.getStudent ("10000013"); System.out.println ("ชื่อ:" + entity.getStudentName ()); -ทดสอบกับ Junit:
@runwith (value = springjunit4classrunner.class) @contextconfiguration (value = "test-servlet.xml") Public Class StudentMapperTest {@AutoWired ClassMapper ClassMapper; @AutoWired Private StudentMapper StudentMapper; @Transactional โมฆะสาธารณะ getStudentTest () {entity studentEntity = studentMapper.getStudent ("10000013"); System.out.println ("" + entity.getStudentId () + entity.getStudentName ()); รายการ <TudentEntity> studentList = StudentMapper.getStudentAll (); สำหรับ (StudentEntity EntityTemp: StudentList) {System.out.println (EntityTemp.getStudentName ()); - 2. ไฟล์การกำหนดค่าหลักของ MyBatis
เมื่อกำหนด SQLSessionFactory คุณต้องระบุไฟล์การกำหนดค่าหลัก MyBatis:
<bean id = "sqlsessionfactory"> <property name = "configlocation" value = "classpath: mybatis-config.xml" /> <property name = "dataSource" ref = "dataSource" /> </ebean>
แท็กย่อยภายใต้การกำหนดค่าในการกำหนดค่า mybatis รวมถึง:
การกำหนดค่า |-คุณสมบัติ |-การตั้งค่า | --- typealiases | --- typeHandlers | --- ObjectFactory | --- ปลั๊ก
2.1 คุณสมบัติคุณสมบัติ
ไฟล์การกำหนดค่าคุณสมบัติเกี่ยวข้องกับ java.properties กำหนดค่าทรัพยากรของคุณสมบัติเพื่อระบุเส้นทางของ. properties จากนั้นกำหนดค่าชื่อและค่าของคุณสมบัติภายใต้แท็กคุณสมบัติ คุณสามารถแทนที่ค่าคุณสมบัติที่เกี่ยวข้องในไฟล์. properties
<!-การแทนที่คุณสมบัติ-> <properties resource = "mysql.properties"> <property name = "jdbc.driverclassname" value = "com.mysql.jdbc.driver"/> <property name = "jdbc.url" value = "Jdbc: mysql: // value = "root"/> <property name = "password" value = "LimingNihao"/> </premerties>
2.2 การตั้งค่า
นี่เป็นขั้นตอนสำคัญสำหรับ MyBatis ในการแก้ไขรายละเอียดกระบวนการดำเนินการ ตารางต่อไปนี้อธิบายการตั้งค่าความหมายและค่าเริ่มต้นเหล่านี้
การตั้งค่า | อธิบาย | ค่าที่อนุญาต | ค่าเริ่มต้น |
cacheenabled | แคชทั้งหมดภายใต้ไฟล์กำหนดค่านี้เป็นการตั้งค่าเปิด/ปิดทั่วโลก | จริง | เท็จ | จริง |
lazyloadingenabled | การตั้งค่าทั่วโลกกำลังโหลดขี้เกียจ หากตั้งค่าเป็น 'เท็จ' สิ่งที่เกี่ยวข้องทั้งหมดจะเริ่มต้นและโหลด | จริง | เท็จ | จริง |
aggressivelazyloading | เมื่อตั้งค่าเป็น 'จริง' วัตถุที่กำลังโหลดขี้เกียจอาจถูกโหลดโดยคุณสมบัติที่ขี้เกียจทั้งหมด มิฉะนั้นคุณสมบัติแต่ละคุณสมบัติจะถูกโหลดตามต้องการ | จริง | เท็จ | จริง |
MultipleSultSetSenabled | อนุญาตและไม่อนุญาตให้คำสั่งเดียวส่งคืนชุดข้อมูลหลายชุด (ขึ้นอยู่กับข้อกำหนดของไดรเวอร์) | จริง | เท็จ | จริง |
usecolumnlabel | ใช้คอลัมน์ป้ายกำกับแทนชื่อคอลัมน์ ไดรฟ์ที่แตกต่างกันมีวิธีการที่แตกต่างกัน อ้างถึงเอกสารประกอบไดรฟ์หรือทดสอบด้วยตัวเลือกที่แตกต่างกันสองแบบนี้ | จริง | เท็จ | จริง |
useGeneratedKeys | อนุญาตให้ JDBC สร้างคีย์หลัก จำเป็นต้องมีการสนับสนุนไดรฟ์ หากตั้งค่าเป็นจริงการตั้งค่านี้จะบังคับให้คีย์หลักที่สร้างขึ้นไดรฟ์บางตัวไม่เข้ากัน แต่ยังสามารถดำเนินการได้ | จริง | เท็จ | เท็จ |
AutomappingBehavior | ระบุว่า mybatis แมปฟิลด์ตารางข้อมูลกับคุณสมบัติของวัตถุโดยอัตโนมัติและอย่างไร บางส่วนจะแมปโดยอัตโนมัติโดยอัตโนมัติโดยไม่มีผลลัพธ์ซ้อนกัน เต็มจะแมปผลลัพธ์ที่ซับซ้อนทั้งหมดโดยอัตโนมัติ | ไม่มี, บางส่วน เต็ม | บางส่วน |
DefaultExecutortype | กำหนดค่าและตั้งค่า Executor และ Executor อย่างง่ายจะเรียกใช้คำสั่งอื่น ๆ ผู้ดำเนินการนำใช้ซ้ำอาจนำคำสั่งงบที่เตรียมไว้ซ้ำคำสั่งและผู้ดำเนินการแบทช์อาจดำเนินการตามคำสั่งและการอัปเดตแบทช์ซ้ำ ๆ | เรียบง่าย นำกลับมาใช้ใหม่ ชุด | เรียบง่าย |
DefaultStatementTimeout | กำหนดเวลา จำกัด เพื่อกำหนดระยะเวลาที่ไดรฟ์จะรอให้ฐานข้อมูลตอบสนองต่อการหมดเวลา | จำนวนเต็มบวก | ไม่ได้ตั้งค่า (โมฆะ) |
<การตั้งค่า> <การตั้งค่าชื่อ = "cacheenabled" value = "true" /> <การตั้งค่าชื่อ = "lazyloadingenabled" value = "true" /> <การตั้งค่าชื่อ = "MultipleSultSetSenabled" value = "true" /> <การตั้งค่า = "usecolumnLabel" value = "true" /> /> < /การตั้งค่า>
2.3 Typealiases Type Alias
ชื่อนามแฝงคือตัวย่อของประเภท Java
มันเชื่อมโยงกับการกำหนดค่า XML ซึ่งย่อเป็นชื่อคลาส Java ที่มีความยาว ตัวอย่างเช่น:
<typealias> <typealias alias = "ผู้ใช้" type = "com.manager.data.model.userentity" /> <typealias alias = "studententity" type = "com.manager.data.model.studententity"
ด้วยการกำหนดค่านี้ "StudentEntity" สามารถใช้งานได้ทุกที่แทนที่จะเป็น "com.manager.data.model.studententity"
สำหรับประเภท Java ปกติมีนามแฝงประเภทในตัว พวกเขาเป็นทั้งตัวพิมพ์ใหญ่และเนื่องจากชื่อที่โอเวอร์โหลดคุณควรให้ความสนใจกับการจัดการประเภทพื้นเมืองพิเศษ
นามแฝง | ประเภทของแผนที่ |
_byte | ไบต์ |
_ยาว | ยาว |
_สั้น | สั้น |
_int | int |
_จำนวนเต็ม | int |
_สองเท่า | สองเท่า |
_ลอย | ลอย |
_boolean | บูลีน |
สาย | สาย |
ไบต์ | ไบต์ |
ยาว | ยาว |
สั้น | สั้น |
int | จำนวนเต็ม |
จำนวนเต็ม | จำนวนเต็ม |
สองเท่า | สองเท่า |
ลอย | ลอย |
บูลีน | บูลีน |
วันที่ | วันที่ |
ทศนิยม | ใหญ่ |
ใหญ่ | ใหญ่ |
วัตถุ | วัตถุ |
แผนที่ | แผนที่ |
Hashmap | Hashmap |
รายการ | รายการ |
ผู้เข้าร่วมงาน | ผู้เข้าร่วมงาน |
ของสะสม | ของสะสม |
ตัววนซ้ำ | ตัววนซ้ำ |
2.4 handle typehandlers ประเภท
ไม่ว่า MyBatis จะตั้งค่าพารามิเตอร์ในคำสั่งการประมวลผลล่วงหน้าหรือใช้ค่าจากชุดผลลัพธ์ตัวประมวลผลประเภทจะใช้ในการแปลงค่าที่ได้รับเป็นประเภท Java ในวิธีที่เหมาะสม ตารางต่อไปนี้อธิบายตัวประมวลผลประเภทเริ่มต้น
พิมพ์โปรเซสเซอร์ | ประเภท Java | ประเภท JDBC |
Booleantypehandler | บูลีนบูลีน | ค่าบูลีนที่เข้ากันได้ใด ๆ |
Bytetypehandler | ไบต์ไบต์ | หมายเลขที่เข้ากันได้หรือประเภทไบต์ |
กางเกงขาสั้น | สั้นสั้น | รูปแบบดิจิตอลหรือสั้น ๆ ที่เข้ากันได้ |
จำนวนเต็ม | จำนวนเต็ม, int | ดิจิตอลและจำนวนเต็มที่เข้ากันได้ |
Longtypehandler | ยาวยาว | ดิจิตอลที่เข้ากันได้หรือโมเดลยาว ๆ |
Floattypehandler | ลอยลอย | ประเภทจุดลอยตัวแบบดิจิตอลหรือความแม่นยำเดียวที่เข้ากันได้ |
DoubleTypeHandler | สองเท่าสองเท่า | ประเภทจุดลอยตัวแบบดิจิตอลหรือจุดลอยตัวแบบสองเท่าที่เข้ากันได้ |
BigDecimaltypehandler | ใหญ่ | ประเภทเลขทศนิยมหรือทศนิยมที่เข้ากันได้ |
Stringtypehandler | สาย | ประเภทถ่านและ Varchar |
คนขี้เหนียว | สาย | ประเภท clob และ longvarchar |
Nstringtypehandler | สาย | ประเภท nvarchar และ nchar |
nclobtypehandler | สาย | ประเภท nclob |
Bytearraytypehandler | ไบต์ [] | ประเภทสตรีมไบต์ที่เข้ากันได้ |
Blobtypehandler | ไบต์ [] | ประเภทหยดและ longvarbinary |
Datetypehandler | วันที่ (java.util) | ประเภทการประทับเวลา |
DateOnlyTypehandler | วันที่ (java.util) | ประเภทวันที่ |
Timonlytypehandler | วันที่ (java.util) | ประเภทเวลา |
sqltimestamptypehandler | การประทับเวลา (java.sql) | ประเภทการประทับเวลา |
sqldatetypehandler | วันที่ (java.sql) | ประเภทวันที่ |
sqltimetypehandler | เวลา (java.sql) | ประเภทเวลา |
Objecttypehandler | ใดๆ | ประเภทอื่น ๆ หรือไม่ระบุ |
enumtypehandler | ประเภทการแจงนับ | VARCHAR - ประเภทสตริงที่เข้ากันได้ใด ๆ ที่เก็บไว้เป็นรหัส (ไม่ได้จัดทำดัชนี) |
LimingStringTypeHandler ระดับสาธารณะใช้ pareHandler {@Override โมฆะสาธารณะ setParameter (PreparedStatement PS, int i, พารามิเตอร์วัตถุ, JDBCType JDBCType) พ่น SQLException {System.out.println ("SetParameter - Parameter jdbctype.type_code); ps.setstring (i, ((สตริง) พารามิเตอร์)); } @Override วัตถุสาธารณะ getResult (Resultset RS, String ColumnName) พ่น sqlexception {system.out.println ("getResult - columnName:" + คอลัมน์ชื่อ); ส่งคืน rs.getString (ชื่อคอลัมน์); } @Override วัตถุสาธารณะ getResult (callablestatement cs, int columnindex) พ่น sqlexception {system.out.println ("getResult - คอลัมน์ - คอลัมน์:" + columnindex); ส่งคืน cs.getString (columnindex); -เพิ่ม TypeHandler Tag ใน typeHandlers ในไฟล์การกำหนดค่า
<typeHandlers> <typeHandler javatype = "String" jdbcType = "varchar" handler = "liming.student.manager.type.limingstringtypehandler"/> </ypehandlers>
2.5 ObjectFactory Object Factory
ทุกครั้งที่ mybatis สร้างอินสแตนซ์ใหม่ของวัตถุผลลัพธ์จะใช้ ObjectFactory ObjectFactory เริ่มต้นไม่แตกต่างจากการสร้างอินสแตนซ์โดยใช้ตัวสร้างของคลาสเป้าหมาย หากมีพารามิเตอร์ที่แมปแล้วก็เป็นไปได้ที่จะใช้ตัวสร้างกับพารามิเตอร์
หากคุณเขียนการดำเนินการเริ่มต้นของ ObjectFactory อีกครั้งคุณสามารถสร้างของคุณเองโดยสืบทอด org.apache.ibatis.reflection.factory.defaultObjectFactory
อินเทอร์เฟซ ObjectFactory นั้นง่าย มันมีสองวิธีสำหรับการสร้างหนึ่งคือการจัดการกับตัวสร้างเริ่มต้นและอีกวิธีหนึ่งคือการจัดการกับตัวสร้างพารามิเตอร์ ในที่สุดวิธี SetProperties สามารถใช้ในการกำหนดค่า ObjectFactory หลังจากเริ่มต้นอินสแตนซ์ ObjectFactory ของคุณคุณสมบัติที่กำหนดไว้ใน Body Element ObjectFactory จะถูกส่งผ่านไปยังวิธี SetProperties
LimingObjectFactory ขยายระดับสาธารณะขยายค่าเริ่มต้น {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = -399284318168302833L; @Override วัตถุสาธารณะสร้าง (ประเภทคลาส) {return super.create (ประเภท); } @Override วัตถุสาธารณะสร้าง (ประเภทคลาส, รายการ <class> constructorArgTypes, รายการ <jobch> contructorargs) {system.out.println ("create - type:" + type.toString ()); return super.create (ประเภท, constructorargtypes, constructorargs); } @Override โมฆะสาธารณะ setProperties (คุณสมบัติคุณสมบัติ) {system.out.println ("setProperties - คุณสมบัติ:" + properties.toString () + ", บางส่วน:" คุณสมบัติ. getProperty ("บางส่วน")); super.setProperties (คุณสมบัติ); -เพิ่ม Tag ObjectFactory ลงในไฟล์การกำหนดค่า
<objectFactory type = "liming.student.manager.configuration.limingobjectFactory"> <property name = "someproperty" value = "100"/> </objectFactory>
2.6 ปลั๊กอินปลั๊กอิน
MyBatis ช่วยให้คุณสกัดกั้นการโทรที่ดำเนินการโดยคำสั่งที่แมป ณ จุดหนึ่ง โดยค่าเริ่มต้น MyBatis อนุญาตให้ปลั๊กอินสามารถสกัดกั้นการโทรวิธี:
รายละเอียดของวิธีการในคลาสเหล่านี้สามารถพบได้โดยดูที่ลายเซ็นของแต่ละวิธีและซอร์สโค้ดของพวกเขามีอยู่ในแพ็คเกจการกระจาย MyBatis คุณควรเข้าใจพฤติกรรมของวิธีการเอาชนะของคุณโดยสมมติว่าคุณกำลังทำมากกว่าการตรวจสอบการโทร หากคุณพยายามแก้ไขหรือแทนที่วิธีที่กำหนดคุณอาจทำลายแกนกลางของ mybatis นี่คือคลาสและวิธีการระดับต่ำและคุณควรใช้ปลั๊กอินด้วยความระมัดระวัง
การใช้ปลั๊กอินเป็นพลังงานที่ง่ายมากที่พวกเขามีให้ การใช้งานอินเตอร์เฟส Interceptor อย่างง่ายและกำหนดลายเซ็นที่ระบุที่คุณต้องการสกัดกั้น
2.7 สภาพแวดล้อม
MyBatis สามารถกำหนดค่าได้ด้วยสภาพแวดล้อมที่หลากหลาย สิ่งนี้สามารถช่วยคุณแมป SQL ให้สอดคล้องกับหลายฐานข้อมูล ฯลฯ
2.8 Mapper Mapper
นี่คือคำสั่งที่บอก mybatis ว่าจะค้นหาการแมป SQL ได้ที่ไหน คุณสามารถใช้การอ้างอิงทรัพยากรใน classpath หรือใช้อักขระเพื่อป้อนการอ้างอิง URL ที่แน่นอน
ตัวอย่างเช่น:
<mapper resource = "com/manager/data/maps/usermapper.xml"/> <mapper resource = "com/manager/data/maps/studentmapper.xml"/> <mapper resource = "com/manager/data/maps/classmapper.xml"/> </mappers>