ก่อนหน้านี้ articlemybatis บทนำการเรียนรู้การเรียนรู้ (I) - ในการเริ่มต้นอย่างรวดเร็ว mybatis เราได้พูดคุยเกี่ยวกับวิธีการใช้ mybatis เพื่อสอบถามข้อมูลในตารางผู้ใช้ซึ่งเป็นการแนะนำเบื้องต้นเกี่ยวกับ mybatis วันนี้เราจะอธิบายวิธีการใช้ mybatis เพื่อดำเนินการ CRUD ในตารางผู้ใช้ ก่อนที่คุณจะไปที่หัวข้อฉันจะเพิ่มความรู้พื้นฐานเกี่ยวกับ mybatis และ crud
mybatis คืออะไร?
MyBatis เป็นเฟรมเวิร์กเลเยอร์การคงอยู่ที่ยอดเยี่ยมที่รองรับการสืบค้น SQL แบบธรรมดาขั้นตอนที่เก็บไว้และการทำแผนที่ขั้นสูง MyBatis กำจัดการตั้งค่าด้วยตนเองของรหัส JDBC และพารามิเตอร์เกือบทั้งหมดและค้นหาชุดผลลัพธ์ MyBatis สามารถใช้ XML หรือคำอธิบายประกอบแบบง่าย ๆ สำหรับการกำหนดค่าและการแมปดั้งเดิมไปยังอินเตอร์เฟสแมปและ Pojos ของ Java (วัตถุ Java Old Old Old) ลงในบันทึกในฐานข้อมูล
mybatis ดาวน์โหลด: https://github.com/mybatis/mybatis-3/releases
crud หมายถึง
CRUD หมายถึงตัวย่อของตัวอักษรตัวแรกของหลายคำเมื่อทำการประมวลผลการคำนวณ ส่วนใหญ่จะใช้เพื่ออธิบายฟังก์ชั่นการปฏิบัติงานพื้นฐานของฐานข้อมูลหรือเลเยอร์การคงอยู่ในระบบซอฟต์แวร์
เมื่อไปที่จุดสภาพแวดล้อมการทดสอบที่ใช้ในบทความนี้คือสภาพแวดล้อมการทดสอบในบทความก่อนหน้า
1. ใช้ mybatis เพื่อดำเนินการ CRUD บนตาราง - การใช้งานที่ใช้ XML
1. กำหนดไฟล์ XML การแมป SQL
เนื้อหาของไฟล์ usermapper.xml มีดังนี้:
<? xml version = "." การเข้ารหัส = "utf-"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis--mapper.dtd"> ค่าของเนมสเปซถูกตั้งค่าตามปกติเป็นชื่อแพ็คเกจ + ชื่อไฟล์แผนที่ SQL เพื่อให้ค่าของเนมสเปซสามารถรับประกันได้ว่าไม่ซ้ำกัน ตัวอย่างเช่น namespace = "me.gacl.mapping.usermapper" คือ me.gacl.mapping (ชื่อแพ็คเกจ) + usermapper (usermapper.xml คำต่อท้ายลบไฟล์)-> <mapper namespace = "me.gacl.mapping ไม่ซ้ำกันและแอตทริบิวต์พารามิเตอร์ไม่สามารถนำกลับมาใช้ใหม่เพื่อระบุประเภทพารามิเตอร์ที่ใช้ในการสืบค้น แอตทริบิวต์ ResultType ระบุประเภทชุดผลลัพธ์ที่ส่งคืนโดย Query ResultType = "me.gacl.domain.user" หมายถึงการห่อหุ้มผลลัพธ์การสืบค้นลงในวัตถุของคลาสผู้ใช้กลับไปที่คลาสผู้ใช้ซึ่งเป็นคลาสเอนทิตีที่สอดคล้องกับตารางผู้ใช้-> <! resultType = "me.gacl.domain.user"> เลือก * จากผู้ใช้ที่ id =#{id} </select> <!-สร้างผู้ใช้ (สร้าง)-> <แทรก id = "adduser" parameterType = "me.gacl.domain.user" -> <delete id = "deleteUser" parameterType = "int"> ลบจากผู้ใช้ที่ id =#{id} </ลบ> <!-แก้ไขผู้ใช้ (อัปเดต)-> <update id = "updateUser" พารามิเตอร์ {me.gacl.domain.user "> อัปเดตชื่อผู้ใช้ =#{name} แบบสอบถามผู้ใช้ทั้งหมด-> <select id = "getAllusers" resultType = "me.gacl.domain.user"> เลือก * จากผู้ใช้ </select> </mapper> รหัสชั้นเรียนทดสอบหน่วยมีดังนี้:
แพ็คเกจ me.gacl.test; นำเข้า java.util.list; นำเข้า me.gacl.domain.user; นำเข้า me.gacl.util.mybatisutil; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.junit.test; testadd () {// sqlsession sqlsession = mybatisutil.getsqlsession (เท็จ); sqlsession sqlsession = mybatisutil.getsqlsession (จริง); * Adduser เป็นค่าแอตทริบิวต์ ID ของแท็กแทรก ผ่านค่าแอตทริบิวต์ id ของแท็กแทรกคุณสามารถค้นหา SQL ที่จะดำเนินการ*/string statement = "me.gacl.mapping.usermapper.adduser"; // แผนที่ SQL identification user user ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName ("ผู้ใช้ Lonely และ Canglang"); sqlsession.insert (คำสั่ง, ผู้ใช้); // ส่งธุรกรรมด้วยตนเอง // sqlsession.commit (); // หลังจากดำเนินการ SQL ด้วย sqlsession คุณต้องปิด sqlsessionsqlsession.close (); System.out.println (retresult);}@testpublic void testupdate () {sqlsession sqlsession = mybatisutil.getsqlsession (จริง);/*** แผนที่ sql identification,* me.gacl.mapping.usermapper ค่าแอตทริบิวต์ id ของแท็กการอัปเดต SQL ที่จะดำเนินการสามารถพบได้ผ่านค่าแอตทริบิวต์ ID ของแท็กการอัปเดต */stress statement = "me.gacl.mapping.usermapper.updateuser"; // การแม็พ SQL id string user ผู้ใช้ = ผู้ใช้ใหม่ (); user.setId (); user.setName ("Lonely Canglang"); user.setaGe (); // ดำเนินการปรับเปลี่ยน จำเป็นต้องปิด sqlsession.close (); system.out.println (retresult);}@testpublic void testdelete () {sqlsession sqlsession = mybatisutil.getsqlsession (จริง);/*** แผนที่ ไฟล์ USERMAPPER.XML, * DELETEUSER เป็นค่าแอตทริบิวต์ ID ของแท็กลบ SQL ที่จะดำเนินการสามารถพบได้ผ่านค่าแอตทริบิวต์ id ของคำสั่งลบแท็ก*/สตริง = "me.gacl.mapping.usermapper.deleteuser"; // แผนที่สตริงการระบุ SQL // ดำเนินการลบการดำเนินการ retresult = sqlsession.delete sqlsessionsqlsession.close (); system.out.println (retresult);}@testpublic void testgetall () {sqlsession sqlsession = mybatisutil.getSqlSession () ไฟล์ usermapper.xml, * getAllusers เป็นค่าแอตทริบิวต์ ID ของแท็กเลือก ผ่านค่าแอตทริบิวต์ ID ของแท็กที่เลือกคุณสามารถค้นหา SQL ที่จะดำเนินการ*/String คำสั่งที่จะดำเนินการ = "me.gacl.mapping.usermapper.getAllusers"; // การแมปสตริงตัวตนของ SQL // การดำเนินการค้นหา SQLSession ดำเนินการ SQL คุณต้องปิด sqlSessionsQlSession.close (); System.out.println (lstusers);}} 2. ใช้ mybatis เพื่อดำเนินการ CRUD บนตาราง - การใช้งานตามคำอธิบายประกอบ
1. กำหนดอินเทอร์เฟซสำหรับการแมป SQL
รหัสของอินเทอร์เฟซ USERMAPPERI มีดังนี้:
แพ็คเกจ me.gacl.mapping; นำเข้า java.util.list; นำเข้า me.gacl.domain.user; นำเข้า org.apache.ibatis.annotations.delete; นำเข้า org.apache.ibatis.annotations.insert; GACL* กำหนดอินเทอร์เฟซสำหรับการแมป SQL ระบุ SQL ที่จะดำเนินการโดยใช้คำอธิบายประกอบ*/อินเตอร์เฟสสาธารณะ usermapperi {// ใช้คำอธิบายประกอบ @Insert เพื่อระบุ SQL ที่จะดำเนินการโดยใช้วิธีเพิ่ม @{Age) ในการระบุ SQL ที่จะดำเนินการโดยวิธี deleteById@delete ("ลบจากผู้ใช้ที่ id =#{id}") สาธารณะ int deleteById (int id); // ใช้ @UpDate Annotation เพื่อระบุ SQL ที่จะดำเนินการโดยวิธีการอัปเดต@UPDATE ผู้ใช้); // ใช้คำอธิบายประกอบ @Select เพื่อระบุ SQL ที่จะดำเนินการโดยวิธี getById @select * จากผู้ใช้ที่ id =#{id} ") ผู้ใช้สาธารณะ getById (int id); // ใช้คำอธิบายประกอบ @select เพื่อระบุ SQL ควรสังเกตว่าเราไม่จำเป็นต้องเขียนรหัสคลาสการใช้งานเฉพาะสำหรับอินเทอร์เฟซ USERMApperi คลาสการใช้งานที่เฉพาะเจาะจงนี้สร้างขึ้นโดย mybatis และเราจำเป็นต้องใช้โดยตรงเท่านั้น
2. ลงทะเบียนอินเทอร์เฟซการแมปนี้ในไฟล์ conf.xml
<? xml version = "." การเข้ารหัส = "utf-"?> <! การกำหนดค่า doctype สาธารณะ "-// mybatis.org//dtd config .//en" "http://mybatis.org/dtd/mybatis--config.dtd"> /> <!-กำหนดค่าข้อมูลการเชื่อมต่อฐานข้อมูล-> <dataSource type = "pooled"> <property name = "driver" value = "com.mysql.jdbc.driver" /> <property name = "url" value = "jdbc: mysql: // localhost: /mybatis" /> < /> </dataSource> </environment> </environments> <mappers> <!- ลงทะเบียนไฟล์ usermapper.xml usermapper.xml ตั้งอยู่ในแพ็คเกจ me.gacl.mapping ดังนั้นทรัพยากรจึงถูกเขียนเป็น ME/GACL/MAPPING/USERMAPPER.XML-> <MAPPER RECORY = "ME/GACL/MAPPING/USPPER.XML"/> <!
รหัสของคลาสทดสอบหน่วยมีดังนี้:
แพ็คเกจ me.gacl.test; นำเข้า java.util.list; นำเข้า me.gacl.domain.user; นำเข้า me.gacl.mapping.usermapperi; นำเข้า me.gacl.util.mybatisutil; นำเข้า org.apache.ibatis.session.sqlsession; {@testpublic เป็นโมฆะ testadd () {sqlsession sqlsession = mybatisutil.getsqlsession (true); // รับวัตถุคลาสการใช้งานของอินเทอร์เฟซ UserMapperi วัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMApperi ถูกสร้างขึ้นแบบไดนามิกโดย sqlsession.getMapper (usermapperi.class) USERMAPPERI MAPPER = SQLSESSION.GETMAPPER (USERMAPPERI.CLASS); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName ("userxdp"); user.setage (); int add = mapper.add (ผู้ใช้); // หลังจากใช้ sqlsession เพื่อดำเนินการ SQL System.out.println (เพิ่ม);}@testpublic เป็นโมฆะ testupdate () {sqlsession sqlsession = mybatisutil.getsqlsession (จริง); // รับวัตถุคลาสการใช้งานของอินเทอร์เฟซ UserMapperi วัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMAPPERI ถูกสร้างขึ้นแบบไดนามิกโดย SQLSession.GetMapper (USERMAPPERI.CLASS) USERMAPPERI MAPPER = SQLSESSION.GETMAPPER (USERMAPPERI.CLASS); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setId (); user.setName ("long lang_xdp"); user.setage (); // ดำเนินการปรับเปลี่ยนการดำเนินการ int retresult = mapper.update (ผู้ใช้); // หลังจากใช้ sqlsession testDelete () {sqlsession sqlsession = myBatisutil.getSqlSession (จริง); // รับวัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMAPPERI วัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMAPPERI ถูกสร้างขึ้นแบบไดนามิกโดย sqlSession.getMapper (usermapperi.class) USERMAPPERI MAPPER = SQLSESSION.GETMAPPER (USERMAPPERI.CLASS); sqlsessionsqlsession.close (); System.out.println (retresult);}@testpublic void testgetUser () {sqlsession sqlsession = mybatisutil.getsqlsession (); // รับวัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMApperi วัตถุคลาสการใช้งานของอินเทอร์เฟซ USERMAPPERI ถูกสร้างขึ้นแบบไดนามิกโดย sqlSession.getMapper (usermapperi.class) USERMAPPERI MAPPER = SQLSESSION.GETMAPPER (USERMAPPERI.CLASS); SQL คุณต้องปิด sqlsessionsqlsession.close (); System.out.println (ผู้ใช้);}@testpublic เป็นโมฆะ testgetall () {sqlsession sqlsession = mybatisutil.getsqlsession (); // รับวัตถุคลาสการใช้งานของอินเทอร์เฟซ UserMapperi วัตถุคลาสการใช้งานของอินเทอร์เฟซ usermapperi ถูกสร้างขึ้นแบบไดนามิกโดย sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class); การดำเนินการ SQL โดยใช้ SQLSession คุณต้องปิด SQLSessionsQlSession.close (); System.out.println (lstusers);}} รหัสคลาสเครื่องมือ MyBatisutil ที่ใช้มีดังนี้:
แพ็คเกจ me.gacl.util; นำเข้า java.io.inputstream; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactory; MyBatisutil {/*** รับ sqlsessionfactory*@return sqlsessionfactory*/สาธารณะ sqlsessionfactory getSqlsessionfactory () {string resource = "conf.xml"; inputstream คือ = mybatisutil.class.getClassoLaDer () SQLSessionFactoryBuilder (). build (IS); return factory;}/*** รับ sqlsession* @return sqlsession*/สาธารณะ sqlsession public getsqlsession () {return getsqlsessionfactory () opensession () การทำธุรกรรมหลังจาก SQL ถูกดำเนินการ* False ระบุว่าวัตถุ SQLSession ที่สร้างขึ้นจะไม่กระทำการทำธุรกรรมโดยอัตโนมัติหลังจาก SQL ถูกเรียกใช้งาน ในเวลานี้เราต้องโทรหา sqlsession.commit () ด้วยตนเองเพื่อส่งธุรกรรม* @return sqlsession*/สาธารณะ sqlsession public sqlsession getSqlsession (บูลีน isautocommit) {return getsqlsessionfactory ()รหัสที่เกี่ยวข้องทั้งหมดข้างต้นได้รับการทดสอบและทุกคนสามารถใช้มันด้วยความมั่นใจ!
ข้างต้นเป็นบทช่วยสอนการเรียนรู้ MyBatis ที่แนะนำโดย Editor (II) - วิธีใช้ MyBatis เพื่อดำเนินการ CRUD บนตารางผู้ใช้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!