1. getMapper () อินเทอร์เฟซ
การวิเคราะห์: getMapper () อินเตอร์เฟส idept.class กำหนดอินเทอร์เฟซ
การติดตั้งวิธีการที่ไม่ได้ใช้งาน ในแง่พิเศษวิธีใด ๆ ที่ยืมอาคารจะต้องสอดคล้องกับแอตทริบิวต์ ID ในการกำหนดค่าขนาดเล็ก
ผ่านพร็อกซี: สร้างชื่อคลาสการใช้งานของอินเทอร์เฟซรักษาชื่อ $$ dept_abc, selectdeptbyno () ใน mybatis พื้นฐาน
เทียบเท่ากับประเภทที่แข็งแกร่ง
เช่น
ขั้นตอนที่ 1: กำหนดอินเทอร์เฟซใน cn.happy.dao
แพ็คเกจ cn.happy.dao; นำเข้า java.util.list; นำเข้า cn.happy.entity.dept; อินเทอร์เฟซสาธารณะ Ideptdao {// ดูทั้งหมด ------------ getalldept ควรเป็นเช่นเดียวกับ ID ในรายการสาธารณะขนาดเล็ก ขั้นตอนที่ 2: การกำหนดค่า idept.xml การกำหนดค่าขนาดเล็ก
การวิเคราะห์: แอตทริบิวต์ ID ในการเลือกควรเหมือนกับชื่อวิธีการอินเตอร์เฟสในอินเทอร์เฟซ ชื่อแพ็คเกจแอตทริบิวต์เนมสเปซชื่อของ Mapper คือ cn.happy.dao.ideptdao อินเตอร์เฟส
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd namespace = "cn.happy.dao.ideptdao"> <select id = "getAllDept" resultType = "cn.happy.entity.dept"> เลือก * จาก dept </select> </mapper>
ขั้นตอนที่ 3: คลาสทดสอบ
การวิเคราะห์: มีสองวิธีในการดูข้อมูลทั้งหมด
1) Session.SelectList ("cn.happy.dao.ideptdao.getalldept"); --------------------------------------------------------------------------------------------------------------------------------------------------------------
2) Ideptdao mapper = session.getMapper (Ideptdao.class); เทียบเท่ากับคลาสการใช้งาน GetMapper เป็นประเภทที่แข็งแกร่ง
// 01View ข้อมูลทั้งหมด getMapper () ชื่อวิธีของคลาสอินเตอร์เฟสควรจะเหมือนกับ ID ของการกำหนดค่าขนาดเล็ก @TestPublic Void TestSelectall () {SQLSession Session = Factory.opensession (); // ใช้ประเภทอ่อนแอ ======= ระดับเอนทิตีระดับเอนทิตี ชื่อ ID ในการกำหนดค่าขนาดเล็ก ============ String/*list <dept> list = session.selectList ("cn.happy.dao.ideptdao.getAlldept"); สำหรับ (dept dept: รายการ) คลาสการใช้งานอินเตอร์เฟสในหน่วยความจำ ================ เทียบเท่ากับประเภทที่แข็งแกร่ง // mapper เป็นคลาสการใช้งานวัตถุวัตถุ Ideptdao mapper = session.getMapper (ideptdao.class); รายการ <pet> list = mapper.getAllDept (); สำหรับ (dept dept: list) {system.out.println (dept.getDeptName ());} ขั้นตอนที่ 4: ใช้การกำหนดค่าขนาดใหญ่ในข้อความทั้งหมด
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype configurationPublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" การกำหนดค่าไปยังนามแฝง-> <peryealiases> <typealias type = "cn.resultmap.Enetity.emp" alias = "emp"/> </typealiases> <environment default = "การพัฒนา"> <environment id = "การพัฒนา"> <transactionManager type = "JDBC"/> value = "oracle.jdbc.oracledriver" /> <property name = "url" value = "jdbc: oracle: thin: @localhost: 1521: ORCL" /> <ชื่อคุณสมบัติ = "ชื่อผู้ใช้" value = "SA" /> ตารางฐานข้อมูล-> <mappers> <mapper resource = "cn/resultmap/enetity/emp.xml"/> </mappers> </การกำหนดค่า>
2. แท็ก ResultMap
การวิเคราะห์: สถานการณ์ที่ใช้คือเมื่อคุณสมบัติของคลาสเอนทิตีไม่ตรงกับฐานข้อมูลคุณสมบัติของคลาสเอนทิตีและฐานข้อมูลจะต้องสอดคล้องกัน (ฉันใช้คลาสเอนทิตีมาก่อน)
เช่นการค้นหาพนักงานทุกคนและแผนกในเครือ
ขั้นตอนที่ 1: สร้างอินเทอร์เฟซ
แพ็คเกจ cn.resultmap.dao; นำเข้า java.util.list; นำเข้า cn.resultmap.Enetity.EMP; อินเตอร์เฟสสาธารณะ IEMPDAO {// ดึงพนักงานทั้งหมด ขั้นตอนที่ 2: กำหนดค่าคุณสมบัติในการกำหนดค่าขนาดเล็ก
การวิเคราะห์: สำหรับฝ่ายหนึ่งที่มีมุมมองของพนักงานขนาดใหญ่โปรดใช้สมาคมเพื่อฝังแต่ละคุณลักษณะของฝ่ายหนึ่ง (หากการเชื่อมโยงถูกลบออกมันเป็นผลลัพธ์พื้นฐาน)
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd namespace = "cn.resultmap.dao.iempdao"> <resultmap type = "cn.resultmap.enetity.emp" id = "empmap"> <id property = "empid" คอลัมน์ = "empid"/> <property = "empname" column = "empcity"/> <!-สำหรับแต่ละฝ่ายที่มีมุมมองของพนักงานขนาดใหญ่โปรดใช้การเชื่อมโยง-> <Association Property = "Dept" Javatype = "CN.ResultMap.Enetity.dept"> <result property = "deptName" column = "deptname"/> id = "getAlleMps" resultmap = "empmap"> เลือก e.*, d.* จาก emp e, dept dwhere e.deptno = d.deptno </select> </mapper>
ขั้นตอนที่ 3: คลาสทดสอบ
// resultmap: ชื่อแอตทริบิวต์ของเอนทิตีและชื่อฟิลด์ของตารางรับประกันว่าจะสอดคล้องกับผลลัพธ์ map // หากคุณรายงาน nullexception ดูว่าการกำหนดค่าการเชื่อมโยงการแมปของการกำหนดค่าขนาดเล็กถูกกำหนดค่าหรือไม่ ResultSmap ได้รับการกำหนดค่า @TestPublic Void TestalleMp () {SQLSession Session = Factory.opensession (); iempdao mapper = session.getMapper (iempdao.class); สำหรับ (EMP EMP: AllEMPS) {System.out.println (emp.getEmpName ()+"/t แผนกพันธมิตร"+emp.getDept (). getDeptName ());} session.close ();}; ขั้นตอนที่ 4: แนะนำการกำหนดค่าขนาดเล็กในการกำหนดค่าขนาดใหญ่
3. คอลัมน์ SQL แยก
การวิเคราะห์: แท็ก SQL ช่วยลดความซับซ้อนของปริมาณรหัสในการกำหนดค่าขนาดเล็ก
<!-การใช้แท็ก SQL-> <sql id = "คอลัมน์"> d.deptno, d.deptname </sql> <!-การใช้แท็ก SQL-> <select id = "getAllemps" resultmap = "empmap"> เลือก e.*, <รวมคอลัมน์ "
4. นามแฝงนามแฝง
การวิเคราะห์: เขียนเกี่ยวกับการกำหนดค่าขนาดใหญ่เพื่อให้นามแฝงสามารถอ้างอิงได้ในการกำหนดค่าขนาดเล็ก
<!-เปลี่ยนค่าแอตทริบิวต์ของประเภทในการกำหนดค่านามแฝงนามแฝงเป็นนามแฝง-> <typealiases> <typealias type = "cn.resultmap.exeetity.emp" alias = "emp"/> </ypealiases>
5. การทำงานแบบไดนามิก
การวิเคราะห์: องค์ประกอบหลักที่ใช้ในการใช้ SQL แบบไดนามิกคือ:
หากเลือก (เมื่อ, มิฉะนั้น) ที่ตั้งค่า
เช่นดูผู้คนในเมืองปักกิ่ง
ขั้นตอนที่ 1: อินเทอร์เฟซ
แพ็คเกจ cn.resultmap.dao; นำเข้า java.util.list; นำเข้า cn.resultmap.Enetity.EMP; อินเตอร์เฟสสาธารณะ IEMPDAO {// ดึงพนักงานทั้งหมดขั้นตอนที่ 2: รุ่นเล็ก = "1.0" การเข้ารหัส = "UTF-8"?>
<! doctype mapperpublic "-// mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" type = "cn.resultmap.enetity.emp" id = "empmap"> <id property = "empid" คอลัมน์ = "empid"/> <result property = "empname" คอลัมน์ = "empname"/> <result property = "empcity" javatype = "cn.resultmap.Enetity.dept"> <result property = "deptName" คอลัมน์ = "deptname"/> <result property = "deptno" คอลัมน์ = "deptno"/> </resultmap> <select id = "getAlleMps" e.deptno = d.deptno </select> <!-Query Dynamic Query-> <select id = "testalleMpBuselect" parameterType = "cn.resultmap.Enetity.Emp" ผลการแข่งขัน < test = "empid! = null"> และ empid =#{empid} </ถ้า> <ถ้า test = "empname! = null"> และ empname =#{empname} </ถ้า> <ถ้า test = "empcity! ขั้นตอนที่ 3: ทดสอบ
// ไดนามิกการสืบค้น @TestPublic เป็นโมฆะ testSelect () {SQLSession Session = Factory.opensession (); EMP EMP = ใหม่ emp (); // emp.setempname ("331"); emp.setempcity ("sh"); session.selectlist ("cn.resultmap.dao.iempdao.testallempbuselect", emp); สำหรับ (emp emps: list) {system.out.println (emps.getempname ());} session.close ();}; ขั้นตอนที่ 4: แนะนำการกำหนดค่าขนาดเล็กในการกำหนดค่าขนาดใหญ่
เช่นแก้ไขข้อมูลแผนก
ขั้นตอนที่ 1: อินเทอร์เฟซ
ขั้นตอนที่ 2: การกำหนดค่าขนาดเล็ก
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd namespace = "cn.resultmap.dao.ideptdao"> <resultmap type = "cn.happy.entity.dept" id = "deptresultmap"> <id property = "deptno" column = "deptno"/> resultmap = "deptresultmap"> เลือก d.*, e.* จาก dept d, emp ewhere d.deptno = e.deptno และ d.deptno =#{deptno} </select> <! Dept <et> <ถ้า test = "deptno! = null"> deptno =#{deptno}, </ถ้า> <ถ้า test = "deptName! = null"> deptName =#{deptname}, </if> </set> ขั้นตอนที่ 3: ทดสอบ
/*** การปรับเปลี่ยนแบบไดนามิก**/@testpublic เป็นโมฆะ testupdate () {sqlsession session = factory.opensession (); dept dept = dept ใหม่ (); dept.setDeptName ("แผนกการเงิน"); dept.setDeptNo (1); session.update ("cn.resultmap.dao.ideptdao.testupdate", dept); session.commit (); system.out.println (นับ); session.close ();};ด้านบนเป็นคำอธิบายโดยละเอียดของอินเทอร์เฟซ getMapper () ของ mybatis, แท็ก resultmap, นามแฝงนามแฝง, พยายามแยกคอลัมน์ SQL และการดำเนินการแบบไดนามิก ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!