Java API
ตอนนี้คุณรู้วิธีกำหนดค่า mybatis และสร้างไฟล์การแมปแล้วคุณก็พร้อมที่จะพัฒนาทักษะของคุณ Java API ของ MyBatis เป็นที่ที่คุณเก็บเกี่ยวความพยายามที่คุณได้ทำ อย่างที่คุณจะเห็นเมื่อเทียบกับ JDBC, MyBatis ทำให้รหัสของคุณง่ายขึ้นอย่างมากและทำให้ง่ายเข้าใจและบำรุงรักษาได้ง่าย MyBatis 3 ได้แนะนำการปรับปรุงที่สำคัญมากมายเพื่อให้การทำแผนที่ SQL ดีขึ้น
MyBatis 3 ถูกสร้างขึ้นบน API การกำหนดค่า Java ที่ครอบคลุมและทรงพลัง API การกำหนดค่านี้เป็นพื้นฐานของการกำหนดค่า MyBatis ที่ใช้ XML และยังเป็นพื้นฐานของการกำหนดค่าที่ใช้คำอธิบายประกอบใหม่
คำอธิบายประกอบเป็นวิธีง่ายๆในการใช้คำสั่งการทำแผนที่อย่างง่ายโดยไม่ต้องแนะนำค่าใช้จ่ายมากมาย
เป้าหมายและฉลากที่สอดคล้องกันของคำอธิบายประกอบร่วมกันของ Mybatis แสดงไว้ในตาราง:
| คำอธิบายประกอบ | เป้า | แท็ก XML ที่สอดคล้องกัน |
| @cachenamespace | ใจดี | <แคช> |
| @cachenamespaceref | ใจดี | <Cacheref> |
| @ผลลัพธ์ | วิธี | <resultmap> |
| @ผลลัพธ์ | วิธี | <result> <id> |
| @หนึ่ง | วิธี | <sorcision> |
| @มากมาย | วิธี | <collection> |
@แทรก @อัปเดต @ลบ | วิธี | <แทรก> <podep> <Elete> |
@insertprovider @UpDateProvider @DeleteProvider @SelectProvider | วิธี | <แทรก> <podep> <Elete> <Select> อนุญาตให้สร้าง SQL แบบไดนามิก |
| @param | พารามิเตอร์ | N/A |
| @options | วิธี | คุณสมบัติของคำสั่งการทำแผนที่ |
| @เลือก | วิธี | <Select> |
ความหมายของคำอธิบายประกอบร่วมกันของ mybatis:
@cachenamespace (ขนาด = 512): กำหนดการใช้แคชในตัวภายในเนมสเปซนี้
@Options (usecache = true, flushcache = false, timeout = 10,000): สวิตช์ตัวเลือกสำหรับการสืบค้นบางอย่าง
@Param ("ID"): นามแฝงที่ผ่านการรับรองทั่วโลกตำแหน่งของพารามิเตอร์การสืบค้นในคำสั่ง SQL ไม่ได้อยู่ในรูปแบบของ 0, 1, 2, 3 ... , ตัวห้อยตามลำดับ แต่ชื่อที่สอดคล้องกันซึ่งกำหนดไว้ที่นี่
@Results เป็นอาร์เรย์ที่มี @Result เป็นองค์ประกอบ @Result แสดงถึงความสัมพันธ์การแมปของฟิลด์แอตทริบิวต์เดียว ID = จริงหมายความว่าฟิลด์ ID เป็นคีย์หลัก MyBatis จะให้การเพิ่มประสิทธิภาพที่จำเป็นระหว่างการสืบค้น @Results ทั้งหมดในอาร์เรย์สร้างความสัมพันธ์การแมปของบันทึกเดียวในขณะที่ @Results เป็นคอลเลกชันของบันทึกเดียว นอกจากนี้ยังมีคำอธิบายประกอบที่สำคัญมาก @ResultMap ซึ่งคล้ายกับ @Results
@Select ("คำสั่งค้นหา"), @Insert ("เพิ่มคำสั่ง"), @UpDate ("คำสั่งอัปเดต") และ @Delete ("ลบคำสั่ง") แสดงถึงการดำเนินการเพื่อสอบถามเพิ่มอัปเดตและลบข้อมูล
จากนั้นมาดูการใช้คำอธิบายประกอบ
(1) การใช้คำอธิบายประกอบปกติ (ไม่จำเป็นต้องมีการดำเนินการแผนที่แบบกำหนดเอง):
ตัวอย่างที่ 1
// เพิ่มผู้แต่ง @Insert ("Insertinto Author (ชื่อผู้ใช้รหัสผ่านอีเมลที่อยู่โทรศัพท์)" +"ค่า (#{ชื่อผู้ใช้},#{รหัสผ่าน},#{อีเมล},#{ที่อยู่},#{โทรศัพท์})" ผู้เขียน); // ลบผู้แต่ง @delete ("DeleteFrom Author โดยที่ id = #{id}")@ตัวเลือก (flushcache = false, หมดเวลา = 10,000) voiddeleteauthor สาธารณะ (@param ("id") ID int); เคล็ดลับ: คุณต้องลงทะเบียน Mapper ก่อนโทรหาวิธี:
SessionFactory.getConfiguration (). addMapper (testinteger.class);
หรือกำหนดค่า <mapper> </mapper> ใน mapper.xml
หลังจากลงทะเบียนแล้วให้รับอินเทอร์เฟซ Mapper เพื่อโทรตามปกติ
(2) หากคุณต้องการปรับแต่งแผนที่คุณสามารถใช้คำอธิบายประกอบผลลัพธ์:
ตัวอย่างที่ 2
// สอบถามข้อมูลผู้แต่งทั้งหมด @Select ("เลือก * จากผู้แต่ง") @ตัวเลือก (flushCache = false, หมดเวลา = 10,000, usecache = true) @Results (value = {@Result (id = true, คอลัมน์ = "id", คุณสมบัติ = "id"), @Result (คุณสมบัติ = "USERNAME" @Result (คุณสมบัติ = "อีเมล", คอลัมน์ = "อีเมล"), @Result (คุณสมบัติ = "ที่อยู่", คอลัมน์ = "ที่อยู่"), @Result (คุณสมบัติ = "โทรศัพท์", คอลัมน์ = "โทรศัพท์")}) รายการสาธารณะ <ผู้เขียน> findauthors (); = 10,000, usecache = true) @Results (value = {@Result (id = true, คอลัมน์ = "id", คุณสมบัติ = "id"), @Result (คุณสมบัติ = "ชื่อผู้ใช้", คอลัมน์ = "ชื่อผู้ใช้"), @Result (คุณสมบัติ = "รหัสผ่าน", คอลัมน์ = "รหัสผ่าน") @Result (property = "phone", column = "phone")}) ผู้เขียนสาธารณะ findauthorbyid (@param ("id") intid); หากโครงสร้างชุดผลลัพธ์ที่ส่งคืนโดยการสืบค้นหลายรายการเหมือนกันคุณสามารถใช้ @ResultMap เพื่อกำหนดโครงสร้างการส่งคืน การใช้คำอธิบายประกอบนี้คุณจะต้องกำหนดค่าผลลัพธ์ของคุณในไฟล์การแมปของคุณ @ResultMap (value = "name") เป็น ID ResultMap ในไฟล์การแมป ด้วยวิธีนี้คุณต้องลงทะเบียนไฟล์การกำหนดค่าของคุณใน <mapper> และใช้ @ResultMap ในอินเทอร์เฟซเพื่ออ้างอิง ID ผลลัพธ์ในไฟล์การกำหนดค่าดังนี้:
ตัวอย่างที่ 3
selfmapper.xml
// แต่ละบรรทัดบันทึกคือ hashmap <resultmapType = "java.util.hashmap" id = "selfmap"> <resultProperty = "n" คอลัมน์ = "city_name"/> ....... </resultsmap>
selfmapper.java:
@Select ("เลือก A.ID, B.Name, C. State จาก ............ ")@resultmap (value = "selfmap") รายการสาธารณะ <hashmap> sel (); // โปรดทราบว่ารายการที่ส่งคืน กรณีที่สมบูรณ์
รหัสอินเทอร์เฟซ
แพ็คเกจ com.obtk.dao; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า org.apache.ibatis.annotations.insert; นำเข้า org.apache.ibatis.annotations.options; นำเข้า org.apache.ibatis.annotations.results; นำเข้า org.apache.ibatis.annotations.results; นำเข้า org.apache.ibatis.annotations.select; นำเข้า com.obtk.entitys.studententity; อินเทอร์เฟซสาธารณะ istudentDao {@Insert ("แทรกเข้าไปในนักเรียน (stuname, เพศ, อายุ, ที่อยู่, deptidd)"+ "ค่า (#{stuname},#{เพศ},#{อายุ},#{ที่อยู่},#{deptid}) stu); @select ("เลือก * จากนักเรียนที่ stuid =#{stuid}") @Results (// ตราบใดที่ค่าคุณสมบัติที่ไม่สอดคล้องกับชื่อคอลัมน์ถูกกำหนดค่าค่า = {@Result (คอลัมน์ = "เพศ", คุณสมบัติ = "เพศ")}) @select ("เลือก * จากนักเรียนที่เพศ =#{qqq} และที่อยู่ =#{พื้นที่}") @Results (// ตราบใดที่ค่าคุณสมบัติการกำหนดค่า = {@Result (คอลัมน์ = "เพศ", คุณสมบัติ = "เพศ")}) // การกำหนดค่าคำอธิบายประกอบของสมาคมสากล @Select ("เลือก * จากการเข้าร่วมของนักเรียนเข้าร่วมแผนก d" +"บน s.deptIdd = d.deptid" +"โดยที่ s.gender =#{sex}" +"และ d.departName =#{deptname}") - กรณีที่ 1 สอบถามวัตถุ
แพ็คเกจ com.obtk.test; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า com.obtk.dao.istudentdao; นำเข้า com.obtk.entitys.studententity; นำเข้า com.obtk.utils.mybatisutil; คลาสสาธารณะ Annoselectone {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sqlsession session = null; โรงงาน SQLSessionFactory = NULL; ลอง {session = mybatisutil.getSession (); โรงงาน = mybatisutil.getFactory (); // เชื่อมโยงการกำหนดค่า SQL ในอินเทอร์เฟซด้วยไฟล์การกำหนดค่าหลักโรงงาน GetConfiguration (). AddMapper (istudentDao.Class); istudentdao studao = session.getMapper (istudentdao.class); Studententity Stu = Studao.QueryById (129); System.out.println (stu.getStuname ()+","+stu.getsex ()+","+stu.getAddress ()+","+stu.getStuid ()); } catch (exception e) {e.printstacktrace (); } ในที่สุด {mybatisutil.losesession (); - กรณีที่ 2 ผ่านพารามิเตอร์หลายตัวและค้นหาหลายวัตถุ
แพ็คเกจ com.obtk.test; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า com.obtk.dao.istudentdao; นำเข้า com.obtk.entitys.studententity; นำเข้า com.obtk.utils.mybatisutil; คลาสสาธารณะ AnnoselectMany {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sqlsession session = null; โรงงาน SQLSessionFactory = NULL; ลอง {session = mybatisutil.getSession (); โรงงาน = mybatisutil.getFactory (); // เชื่อมโยงการกำหนดค่า SQL ในอินเทอร์เฟซด้วยไฟล์การกำหนดค่าหลักโรงงาน GetConfiguration (). AddMapper (istudentDao.Class); istudentdao studao = session.getMapper (istudentdao.class); hashmap parammap = new hashmap (); parammap.put ("qqq", "male"); parammap.put ("พื้นที่", "หอพักนักเรียน"); รายการ <TudentEntity> Stulist = Studao.QueryByMany (Parammap); สำหรับ (StudentEntity Stu: Stulist) {System.out.println (stu.getStuname ()+","+stu.getsex ()+","+stu.getAddress ()+","+stu.getStuid ()); }} catch (exception e) {e.printstacktrace (); } ในที่สุด {mybatisutil.losesession (); - กรณีที่ 3 เพิ่มวัตถุ
แพ็คเกจ com.obtk.test; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า com.obtk.dao.istudentdao; นำเข้า com.obtk.entitys.studententity; นำเข้า com.obtk.utils.mybatisutil; คลาสสาธารณะ annosavetest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sqlsession session = null; โรงงาน SQLSessionFactory = NULL; ลอง {session = mybatisutil.getSession (); โรงงาน = mybatisutil.getFactory (); // เกี่ยวข้องกับการกำหนดค่า SQL ในอินเทอร์เฟซด้วยไฟล์การกำหนดค่าหลักโรงงาน GetConfiguration (). AddMapper (istudentDao.Class); istudentdao studao = session.getMapper (istudentdao.class); StudentEntity Stu = New Studententity ("Testc#", "Male", 21, "Pluto"); Stu.setDeptIdd (10); int result = studao.saveone (stu); session.commit (); System.out.println ("บันทึกสำเร็จ:"+stu.getStuid ()); } catch (exception e) {e.printstacktrace (); } ในที่สุด {mybatisutil.losesession (); -กรณีที่ 4 ใช้ hashmap สำหรับการสืบค้นสมาคม
แพ็คเกจ com.obtk.test; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า com.obtk.dao.istudentdao; นำเข้า com.obtk.entitys.studententity; นำเข้า com.obtk.utils.mybatisutil; คลาสสาธารณะ AnnoJoinqnn {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sqlsession session = null; โรงงาน SQLSessionFactory = NULL; ลอง {// 4 รับเซสชัน = mybatisutil.getSession (); โรงงาน = mybatisutil.getFactory (); // เชื่อมโยงการกำหนดค่า SQL ในอินเทอร์เฟซด้วยไฟล์การกำหนดค่าหลักโรงงาน GetConfiguration (). AddMapper (istudentDao.Class); istudentdao studao = session.getMapper (istudentdao.class); hashmap parammap = new hashmap (); parammap.put ("เพศ", "ชาย"); parammap.put ("deptname", "ระบบคอมพิวเตอร์"); // 5. รายการคำสั่งดำเนินการ <Hashmap> stulist = studao.QueryByqnn (parammap); สำหรับ (hashmap theobj: stulist) {system.out.println (theobj.get ("stuid")+","+theobj.get ("เพศ")+","+theobj.get ("stuname")+"," }} catch (exception e) {e.printstacktrace (); } ในที่สุด {mybatisutil.losesession (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น