เขียนอินสแตนซ์ง่าย ๆ ของ mybatis แทรกข้อมูล
1. ความหมายของการสร้างตารางฐานข้อมูล DOB = วันเดือนปีเกิด
สร้างนักเรียนตาราง (คีย์หลัก stud_id, ชื่อ varchar2 (20), อีเมล varchar2 (20), วันที่ DOB);
ตารางที่สร้างขึ้นในฐานข้อมูล Oracle หมายความว่าการสร้างประสบความสำเร็จ หากมีการใช้ชื่อคุณสามารถลบได้ก่อนที่จะสร้างตาราง: นักเรียน Drop Table; หรือคาสเคดลบโต๊ะนักเรียนเรียงซ้อนข้อ จำกัด ; แล้วสร้างใหม่อีกครั้ง
2 สร้างโครงการใหม่
2.1 สร้างแพ็คเกจและชั้นเรียนที่สอดคล้องกันโดยที่นักเรียนเป็นวัตถุที่เราต้องการแทรก เนื่องจากชนิดข้อมูลสอดคล้องกับค่าในฐานข้อมูลเราจึงสามารถแทรกวัตถุทั้งหมดได้ ดังนั้นเราจึงใช้คลาส Pojo เพื่อห่อหุ้มวัตถุ
แพ็คเกจ com.mybatis.pojo; นำเข้า java.util.date; นักเรียนชั้นเรียนสาธารณะ {Private Integer Studid; ชื่อสตริงส่วนตัว; อีเมลสตริงส่วนตัว วันที่ส่วนตัว DOB; นักเรียนสาธารณะ () {} // หมายเหตุตัวสร้างโดยไม่มีพารามิเตอร์นักเรียนสาธารณะ (จำนวนเต็ม studid, ชื่อสตริง, อีเมลสตริง, วันที่ dob) {this.studid = studid; this.name = ชื่อ; this.email = อีเมล; this.dob = dob; } จำนวนเต็มสาธารณะ getStudid () {return studid; } โมฆะสาธารณะ setStUDID (Integer studId) {this.studid = studid; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getEmail () {ส่งคืนอีเมล; } โมฆะสาธารณะ setEmail (อีเมลสตริง) {this.email = อีเมล; } วันที่สาธารณะ getDob () {return dob; } โมฆะสาธารณะ setDob (วันที่ dob) {this.dob = dob; } @Override สตริงสาธารณะ toString () {return "นักเรียน [studid =" + studid + ", name =" + name + ", email =" + email + ", dob =" + dob + "]"; -3. แนะนำแพ็คเกจ MyBatis Core และแพ็คเกจการพึ่งพาตัวเลือกในโครงการ
ดาวน์โหลดไฟล์: ดาวน์โหลดแพ็คเกจ mybatis
ดาวน์โหลดเวอร์ชันล่าสุด: https://github.com/mybatis/mybatis-3/releases
แพ็คเกจที่จำเป็น mybatis-3.3.0.jar ojdbc14.jar
แพ็คเกจเสริม junit-4.7.jar log4j-1.2.17.jar
ในหมู่พวกเขา MyBatis-3.3.0.JAR ใช้ในการใช้งานฟังก์ชั่นที่จัดทำโดย MyBatis, OJDBC14.JAR ใช้เพื่อเชื่อมต่อกับฐานข้อมูล Junit-4.7.jar ใช้เพื่อใช้การทดสอบการทำงานและ log4j-1.2.17.jar
ดังที่แสดงในรูปด้านล่าง: สร้างขวดโฟลเดอร์ใหม่ในไดเรกทอรีโครงการคัดลอกและวางแพ็คเกจที่คุณต้องนำเข้าสู่ไดเรกทอรี JAR
หมายเหตุ: อย่าใช้ภาษาจีนเมื่อเก็บแพ็คเกจขวดเหล่านี้ไว้ในเครื่อง
จากนั้นคลิกขวาเพื่อเลือกไฟล์สี่ไฟล์ในไดเรกทอรี JAR คลิกเพื่อเพิ่ม "BuildPath-> เพิ่มเส้นทาง" และคุณจะเห็นอินเทอร์เฟซต่อไปนี้: หมายความว่าเส้นทางจะถูกเพิ่มสำเร็จ
4. แนะนำไฟล์การกำหนดค่า mybatis ไฟล์ข้อ จำกัด dtd ในโครงการ
ในทำนองเดียวกันสร้างไดเรกทอรี DTD ใหม่ภายใต้โครงการและคัดลอกไฟล์ข้อ จำกัด ไปยังไดเรกทอรีดังแสดงในรูปด้านล่าง: โครงสร้างไฟล์ DTD, ดาวน์โหลดไฟล์ DTD:
http://download.csdn.net/download/suwu150/9660699
ฟังก์ชั่นของไฟล์ DTD คือการ จำกัด ไฟล์การกำหนดค่า XML เพื่อให้โปรแกรมเมอร์สามารถเขียนไฟล์ XML ตามข้อกำหนดและ mybatis สามารถอ่านและแยกวิเคราะห์ได้อย่างถูกต้อง DTD ด้านบนได้รับการกำหนดค่าในเครื่องและแน่นอนว่าเรายังสามารถใช้การเชื่อมต่อของเว็บไซต์อย่างเป็นทางการเพื่อ จำกัด
5 ไฟล์การกำหนดค่าและไฟล์การแมปใน mybatis จะถูกนำเข้าสู่โครงการตามลำดับ
1) mybatis-config.xml ด้านล่าง src:
ก่อนอื่นเราเชื่อมโยงข้อ จำกัด DTD ในพื้นที่ป้อนรูปด้านล่างการตั้งค่าให้ป้อน XML ในช่องค้นหาเลือกชื่อการกำหนดค่าแคตตาล็อก XML จากนั้นคลิกปุ่มเพิ่มทางด้านขวา
อินเทอร์เฟซที่แสดงในรูปด้านล่างจะปรากฏขึ้นโดยที่ตำแหน่งตำแหน่งและตำแหน่งคีย์ว่างเปล่า รูปด้านล่างได้รับการกำหนดค่า เนื้อหาคีย์คือ -// mybatis.org//dtd config 3.0 // en เนื้อหาตำแหน่งเป็นของคุณเอง คุณสามารถเลือกได้ผ่าน Workspace นั่นคือไฟล์ DTD ที่เราคัดลอกไปยังโครงการก่อนหน้านี้ (ในขั้นตอนที่ 4):
คลิกตกลงตอนนี้เราสามารถเขียนไฟล์กำหนดค่า XML จุดประสงค์ของการเพิ่มข้อ จำกัด คือการสร้างมาตรฐานการเขียนของโปรแกรมเมอร์เพื่อให้แน่ใจว่า mybatis สามารถแยกวิเคราะห์ได้ตามปกติ
ดังที่แสดงในรูปด้านล่าง: เลือก SRC และคลิกขวาเพื่อสร้างไฟล์ใหม่ mybatis-config.xml
หมายเหตุ: จุดเริ่มต้นของไฟล์ XML จะต้องมียอดและจะต้องไม่มีช่องว่างด้านหน้า
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <!-ดำเนินการข้อ จำกัด DTD โดยที่-// mybatis.org//dtd config 3.0 // en เป็นข้อ จำกัด สาธารณะ http://mybatis.org/dtd/mybatis-3-config. <! doctype การกำหนดค่าสาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" ALIAS = "Student" /> < /typealiases> <!- กำหนดค่าสภาพแวดล้อมฐานข้อมูลที่การพัฒนาเป็นชื่อฐานข้อมูลเริ่มต้น ประเภท TransactionManager เป็นประเภท JDBC แหล่งข้อมูลแหล่งข้อมูลใช้พูลการเชื่อมต่อ-> <environment default = "การพัฒนา"> <environment id = "การพัฒนา"> <transactionManager type = "jdbc"> </transactionManager> <dataSource type = "pooled"> <!-กำหนดค่าข้อมูลฐานข้อมูล ใช้ฐานข้อมูล Oracle ที่นี่-> <property name = "driver" value = "oracle.jdbc.driver.oracledriver" /> <property name = "url" value = "jdbc: Oracle: thin:@127.0.0.1: 1521: orcl" /> </environment> </environments> <!-กำหนดค่าเส้นทางการแมปไฟล์ XML ซึ่งคุณสามารถดำเนินการ SQL-> <mappers> <mapper resource = "com/mybatis/mappers/studentmapper.xml"/> </ypers>
2) StudentMapper.xml ด้านล่างแพ็คเกจ com.mybatis.mappers:
ก่อนอื่นเราใช้อินเตอร์เฟส com.mybatis.mappers; แพ็คเกจเพื่อสร้างอินเทอร์เฟซใหม่ studentmapper.java ภายใต้แพ็คเกจเพื่อให้สอดคล้องกับคำสั่ง SQL (การแมป) ในไฟล์ XML เพื่อให้เราสามารถเรียกได้
แพ็คเกจ com.mybatis.mappers; นำเข้า java.util.list; นำเข้า com.mybatis.pojo.student; Public Interface StudentMapper {รายการ <student> findallstudents (); นักเรียน FindStudentById (ID จำนวนเต็ม); เป็นโมฆะ insertStudent (นักเรียนนักเรียน); -ใช้วิธีเดียวกันเพื่อ จำกัด ไฟล์ Mapper
จากนั้นเขียนรหัส XML:
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! ชื่อที่ผ่านการรับรองของอินเทอร์เฟซที่เรากำหนด วิธีนี้คุณสามารถใช้อินเทอร์เฟซเพื่อเรียกคำสั่งการแมป SQL ชื่อนี้จะต้องสอดคล้องกับอินเทอร์เฟซ-> <mapper namespace = "com.mybatis.mappers.studentMapper"> <resultmap type = "student" id = "studentResult"> <id property = "studid" column = "stud_id" /> </resultmap> <select id = "findallstudents" resultmap = "studentresult"> เลือก * จากนักเรียน </select> <!-ถ้าชื่อคอลัมน์และชื่อทรัพย์สินไม่สอดคล้องกันคุณสามารถให้นามแฝงกับคอลัมน์แบบสอบถาม-> <select id = stud_id =#{id} </select> <insert id = "insertStudent" parameterType = "นักเรียน"> แทรกลงในนักเรียน (stud_id, ชื่อ, อีเมล, dob) ค่า (#{studid},#{ชื่อ},#{อีเมล},#{dob}) </แทรก> -
หมายเหตุ: อย่าเขียนเครื่องหมายอัฒภาคที่ส่วนท้ายของคำสั่ง SQL ที่เขียนในไฟล์ XML มิฉะนั้นจะมีการรายงานข้อผิดพลาด ORA-00911: อักขระที่ไม่ถูกต้อง
-
6 กำหนดค่าเอาต์พุตบันทึกในไฟล์ log4j.properties:
ภายใต้ตำแหน่ง SRC ชื่อไฟล์ log4j.properties
เนื้อหา:
log4j.rootlogger = debug, stdout log4j.appender.stdout = org.apache.log4j.consoleAppender log4j.appender.stdout.layout = org.apache.log4j.patternlayout log4j.appender.stdout.layout sql log4j.logger.java.sql.resultset = ข้อมูล log4j.logger.org.apache = ข้อมูล log4j.logger.java.sql.connection = debug log4j.logger.java.sql.statement = debug.logger.
7 สร้างนักเรียนชั้นเรียนทดสอบ MapperTest.java
แพ็คเกจ com.mybatis.test; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า java.util.date; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactorybuilder; นำเข้า org.junit.test; นำเข้า com.mybatis.mappers.studentmapper; นำเข้า com.mybatis.pojo.student; Public Class StudentMapperTest {@Test Public Void Test_InsertStudent () {SQLSession Session = NULL; ลอง {// รับไฟล์การกำหนดค่าอินพุต stream inputstream = resources.getResourceasstream ("mybatis-config.xml"); // สร้างวัตถุจากโรงงาน sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder (). build (inputstream); // ใช้วัตถุโรงงานเพื่อสร้างเซสชัน SQLSession = SQLSessionFactory.Opensession (); // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่วัตถุของคลาสการใช้งาน studentmapper studentMapper = session.getMapper (StudentMapper.class); นักเรียนนักเรียน = นักเรียนใหม่ (1, "suwu150", "[email protected]", วันที่ใหม่ ()); StudentMapper.InsertStudent (นักเรียน); } catch (ioexception e) {session.rollback (); E.PrintStackTrace (); -8 หลังจากการดำเนินการที่ประสบความสำเร็จคุณจะเห็นข้อมูลที่เกี่ยวข้องเกี่ยวกับการรันของโปรแกรมนี้โดยการบันทึก log4j ในคอนโซลดังต่อไปนี้:
คุณสามารถดูข้อมูลต่อไปนี้เมื่อสอบถามฐานข้อมูล
9 แพ็คเกจพื้นฐานสำหรับ mybatis
ทุกครั้งที่มีการอ่านไฟล์การกำหนดค่าวัตถุโรงงาน SQLSessionFactory จะถูกสร้างขึ้นจากนั้นวัตถุ SQLSession จะถูกสร้างขึ้น แม้ว่ากระบวนการนี้จะไม่ซับซ้อน แต่ก็เป็นกระบวนการรหัสซ้ำ ๆ ดังนั้นเราจึงสามารถห่อหุ้มได้:
แพ็คเกจ com.mybatis.utils; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsession; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactorybuilder; คลาสสาธารณะ MyBatissQlSessionFactory {ส่วนตัว SQLSessionFactory SQLSessionFactory ส่วนตัว; สาธารณะ sqlsessionfactory getSqlSessionFactory () {ถ้า (sqlsessionfactory == null) {inputStream inputStream = null; ลอง {inputStream = resources.getResourceasstream ("mybatis-config.xml"); SQLSessionFactory = ใหม่ SQLSessionFactoryBuilder (). build (inputStream); } catch (ioexception e) {e.printstacktrace (); โยน runtimeException ใหม่ (e.getcause ()); }} ส่งคืน sqlsessionfactory; } สาธารณะ sqlsession สาธารณะ opensession () {return opensession (false); // การส่งด้วยตนเองโดยค่าเริ่มต้นดังนั้นเราจำเป็นต้องส่งเมื่อโทร} การเปิด sqlsession แบบคงที่สาธารณะ (boolean autocommit) {return getSqlSessionFactory (). opensession (autocommit); -หลังจากนั้นทุกครั้งที่คุณใช้คุณจะต้องเรียกวิธีการเปิดใช้งานแบบคงที่ในชั้นเรียนนี้
รหัสข้างต้นสามารถย่อได้เป็น: // โปรดทราบว่าการทำธุรกรรมมีความมุ่งมั่นโดยอัตโนมัติหรือมุ่งมั่นด้วยตนเอง
MyBatissQlSessionFactory.opensession (). getMapper (studentmapper.class) .insertstudent (s);
10 ในการทดสอบข้างต้นเราทำฟังก์ชั่นเพิ่มเติมเท่านั้น มาใช้ฟังก์ชั่นการลบการดัดแปลงและการสืบค้นกันเถอะ:
ในไฟล์การแม็พให้กำหนดค่าต่อไปนี้:
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! ชื่อที่ผ่านการรับรองของอินเทอร์เฟซที่เรากำหนด วิธีนี้คุณสามารถใช้อินเทอร์เฟซเพื่อเรียกคำสั่งการแมป SQL ชื่อนี้จะต้องสอดคล้องกับอินเทอร์เฟซ-> <mapper namespace = "com.mybatis.mappers.studentMapper"> <resultmap type = "student" id = "studentResult"> <id property = "studid" column = "stud_id" /> </resultmap> <select id = "findallstudents" resultmap = "studentresult"> เลือก * จากนักเรียน </select> <!-ถ้าชื่อคอลัมน์และชื่อทรัพย์สินไม่สอดคล้องกันคุณสามารถให้นามแฝงกับคอลัมน์แบบสอบถาม-> <select id = stud_id =#{id} </select> <insert id = "insertStudent" parameterType = "นักเรียน"> แทรกลงในนักเรียน (stud_id, ชื่อ, อีเมล, dob) ค่า (#{studid},#{ชื่อ},#{อีเมล},#{dob} </insert> stud_id =#{id} </delete> <อัปเดต id = "updateStudentById" parameterType = "นักเรียน"> อัปเดตนักเรียนตั้งชื่อ =#{ชื่อ}, อีเมล =#{อีเมล} โดยที่ stud_id =#{studid} </update>ในคลาสอินเตอร์เฟสให้กำหนดค่าต่อไปนี้:
แพ็คเกจ com.mybatis.mappers; นำเข้า java.util.list; นำเข้า com.mybatis.pojo.student; Public Interface StudentMapper {รายการ <student> findallstudents (); นักเรียน FindStudentById (ID จำนวนเต็ม); เป็นโมฆะ insertStudent (นักเรียนนักเรียน); เป็นโมฆะ deletestudentbyId (ID จำนวนเต็ม); เป็นโมฆะ updateStudentByID (นักเรียนนักเรียน); -เขียนรหัสต่อไปนี้ในไฟล์ทดสอบ:
แพ็คเกจ com.mybatis.test; นำเข้า java.io.ioException; นำเข้า Java.io.InputStream; นำเข้า java.util.date; นำเข้า java.util.list; นำเข้า org.apache.ibatis.io.resources; นำเข้า org.apache.ibatis.session.sqlsessionfactory; นำเข้า org.apache.ibatis.session.sqlsessionfactorybuilder; นำเข้า org.junit.test; นำเข้า com.mybatis.mappers.studentmapper; นำเข้า com.mybatis.pojo.student; นำเข้า com.mybatis.utils.mybatissqlsessionfactory; Public Class StudentMapperTest {@Test Public Void Test_InsertStudent () {SQLSession Session = NULL; ลอง {// รับไฟล์การกำหนดค่าอินพุต stream inputstream = resources.getResourceasstream ("mybatis-config.xml"); // สร้างวัตถุจากโรงงาน sqlsessionfactory sqlsessionfactory = ใหม่ sqlsessionfactorybuilder (). build (inputstream); // ใช้วัตถุโรงงานเพื่อสร้างเซสชัน SQLSession = SQLSessionFactory.Opensession (); // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่วัตถุของคลาสการใช้งาน studentmapper studentMapper = session.getMapper (StudentMapper.class); นักเรียนนักเรียน = นักเรียนใหม่ (2, "suwu150", "[email protected]", วันที่ใหม่ ()); StudentMapper.InsertStudent (นักเรียน); session.commit (); System.out.println ("เสร็จสิ้นการดำเนินการ"); } catch (ioexception e) {session.rollback (); E.PrintStackTrace (); }} @Test โมฆะสาธารณะ test_DeleTestUDENTBYID () {SQLSESSION SESSION = NULL; Session = MyBatissQlSessionFactory.opensession (); // ใช้คลาสที่ห่อหุ้มด้วย // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่คลาสการใช้งาน Object Object StudentMapper StudentMapper = Session.getMapper (StudentMapper.class); studentmapper.deletestudentbyid (2); session.commit (); System.out.println ("เสร็จสิ้นการดำเนินการ"); } @Test โมฆะสาธารณะ test_UpDatestudentById () {SQLSession Session = NULL; Session = MyBatissQlSessionFactory.opensession (); // ใช้คลาสที่ห่อหุ้มด้วย // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่คลาสการใช้งาน Object Object StudentMapper StudentMapper = Session.getMapper (StudentMapper.class); นักเรียนนักเรียน = นักเรียนใหม่ (); student.setstudid (1); student.setName ("sususu"); Student.setEmail ("[email protected]"); StudentMapper.updatestudentById (นักเรียน); session.commit (); System.out.println ("เสร็จสิ้นการดำเนินการ"); } @Test โมฆะสาธารณะ test_findStudentById () {sqlSession session = null; Session = MyBatissQlSessionFactory.opensession (); // ใช้คลาสที่ห่อหุ้มด้วย // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่วัตถุของคลาสการใช้งาน studentmapper studentMapper = session.getMapper (StudentMapper.class); นักเรียนนักเรียน = StudentMapper.FindStudentById (1); System.out.println (นักเรียน); System.out.println (นักเรียน); System.out.println ("เสร็จสิ้นการดำเนินการ"); } @Test โมฆะสาธารณะ test_findallstudents () {sqlsession session = null; Session = MyBatissQlSessionFactory.opensession (); // ใช้คลาสที่ห่อหุ้มด้วย // ใช้ SQLSession เพื่อรับวัตถุคลาสการใช้งานของอินเทอร์เฟซการแมป การอ้างอิงของอินเทอร์เฟซชี้ไปที่วัตถุของคลาสการใช้งาน studentmapper studentMapper = session.getMapper (StudentMapper.class); รายการ <student> list = studentMapper.Findallstudents (); System.out.println (รายการ); System.out.println ("เสร็จสิ้นการดำเนินการ"); -ด้วยวิธีนี้เราเสร็จสิ้นการเพิ่มการลบการดัดแปลงและการค้นหาวัตถุนักเรียน
ด้านบนเป็นรหัสตัวอย่างของ MyBatis ที่เพิ่มลบลบแก้ไขและค้นหาโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!