เมื่อเร็ว ๆ นี้ฉันพบปัญหาในโครงการ: นำเข้าข้อมูลลงในพื้นหลังและแทรกข้อมูลลงในฐานข้อมูล จำนวนข้อมูลที่นำเข้ามีข้อมูลหลายหมื่นชิ้นและพิจารณาการแทรกข้อมูลเป็นชุด
จากข้อมูลออนไลน์ฉันเขียนตัวอย่างเล็ก ๆ และที่อยู่ดาวน์โหลดตัวอย่างถูกแนบมาในตอนท้ายของบทความ
1. สร้างโครงการใหม่: โครงสร้างไดเรกทอรีโครงการแสดงในรูปด้านล่างเพิ่มแพ็คเกจ JAR ที่เกี่ยวข้อง
2. สร้างตารางฐานข้อมูลใหม่: account_info
สร้าง Table Account_info (หมายเลข "ID" (12) ไม่ใช่ NULL, "USERNAME" VARCHAR2 (64 ไบต์) NULL, "รหัสผ่าน" VARCHAR2 (64 ไบต์) NULL, "เพศ" ถ่าน (1 ไบต์) NULL, "อีเมล" VARCHAR2 (64 ไบต์)
3. สร้างคลาสเอนทิตีบัญชี:
แพ็คเกจ com.oracle.entity; นำเข้า java.sql.date; AccountInfo คลาสสาธารณะ {ID ส่วนตัวยาว; ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว เพศสตริงส่วนตัว อีเมลสตริงส่วนตัว วันที่ส่วนตัวสร้างขึ้น Public Long getId () {return id; } โมฆะสาธารณะ setId (Long id) {this.id = id; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getGender () {กลับเพศ; } โมฆะสาธารณะ setGender (เพศสตริง) {this.gender = เพศ; } สตริงสาธารณะ getEmail () {ส่งคืนอีเมล; } โมฆะสาธารณะ setEmail (อีเมลสตริง) {this.email = อีเมล; } วันที่สาธารณะ getCreatedate () {return complementate; } โมฆะสาธารณะ setCreatedate (วันที่ที่สร้างขึ้น) {this.createdate = สร้างขึ้น; } @Override สตริงสาธารณะ toString () {return "accountInfo [id =" + id + ", ชื่อผู้ใช้ =" + ชื่อผู้ใช้ + ", รหัสผ่าน =" + รหัสผ่าน + ", เพศ =" + เพศ + ", อีเมล =" + อีเมล + " - 4. สร้างคลาสการแมปอินเทอร์เฟซใหม่: AccountInFomapper.java
แพ็คเกจ com.oracle.mapper; นำเข้า java.util.list; นำเข้า com.oracle.entity.accountInfo; อินเทอร์เฟซสาธารณะ AccountInFomapper { / *** สอบถามข้อมูลทั้งหมด* @return* / list <AconsInfo> queryAlcountInfo (); / ** * ข้อมูลการแทรกแบบแบทช5. สร้างไฟล์กำหนดค่า mybatis: mybatis-configuration.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! การกำหนดค่า Doctype สาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd <transactionManager type = "jdbc" /> <dataSource type = "pooled"> <property name = "driver" value = "oracle.jdbc.driver.oracledriver" /> <property name = "url" value = "jdbc: oracle: @LocalHost: value = "xxx"/> </ataSource> </environment> </environments> <mappers> <mapper resource = "config/accountinfomapper.xml"/> </aemappers> </configuration>
6. สร้างไฟล์กำหนดค่าการแมปอินเทอร์เฟซ: AccountInFomapper.xml
ฐานข้อมูลการแทรกแบทช์ของ Oracle นั้นแตกต่างจาก MySQL
mysql:
การคัดลอกรหัสมีดังนี้: แทรกลงใน account_info (รหัส, ชื่อผู้ใช้, รหัสผ่าน, เพศ, อีเมล, create_date) ค่า (,,,,,,) (,,,,,,,)
Oracle:
คัดลอกรหัสดังต่อไปนี้: แทรกลงใน Account_INFO (ID, ชื่อผู้ใช้, รหัสผ่าน, เพศ, อีเมล, create_date) (เลือก 1 ,,,,,,, จาก Dual Union ทั้งหมดเลือก 1 ,,,,, จากคู่)
<? 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.oracle.mapper.accountinfomapper"> <!-ชื่อคลาสเต็มของอินเทอร์เฟซ-> <!-พิมพ์: ชื่อคลาสเต็มของคลาสเอนทิตี-> <resultmap id = "baseresultmap" type = "com.oracle.entity.accountinfo"> property = "username" jdbctype = "varchar" /> <result column = "รหัสผ่าน" คุณสมบัติ = "รหัสผ่าน" jdbctype = "varchar" /> <result column = "gender" property = "Gender" jdbcType = "Char" /> jdbcType = "วันที่"/> </resultmap> <!-id สอดคล้องกับชื่อวิธีในอินเทอร์เฟซ-> <เลือก id = "queryallAccountInfo" resultmap = "baseresultmap"> id, ชื่อผู้ใช้, รหัสผ่าน, เพศ, อีเมล, create_date parameterType = "java.util.list"> แทรกลงใน account_info (id, ชื่อผู้ใช้, รหัสผ่าน, เพศ, อีเมล, create_date) (<foreach collection = "list" index = "" item = "ascentinfo" enion enion ทั้งหมด #{accountinfo.gender}, #{accountinfo.email}, #{accountinfo.createdate} จาก dual </foreach>) </insert> </mappper> 7. เขียนคลาสทดสอบ:
แพ็คเกจ com.oracle.test; นำเข้า java.io.inputstream; นำเข้า java.sql.date นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.list; นำเข้า org.apache.ibatis.io.resources; org.apache.ibatis.session.sqlsessionfactorybuilder นำเข้า com.oracle.entity.accountinfo; นำเข้า com.oracle.mapper.accountinfomapper; คลาสสาธารณะ mybatistest {public Static Main (String [] args) InputStream InputStream = Resources.getResourceasstream (ทรัพยากร); SQLSessionFactory SessionFactory = ใหม่ SQLSessionFactoryBuilder () .build (InputStream); SQLSession Session = SessionFactory.opensession (); MACANTINFOMAPPER MAPPER = SESSION.GETMAPPER (AccountInFomApper.class); รายการ <AccessInfo> accountInFolist = mapper.QueryAllAccountInfo (); if (accountInFolist == null) {system.out.println ("ผลลัพธ์คือ null."); } else {สำหรับ (accountinfo personinfo: accountinfolist) {system.out.println (personinfo); }} mapper.batchinsertaccountinfo (generatedata ()); session.commit (); } รายการคงที่ <AccountInfo> generatedata () {list <AcconentInfo> result = new ArrayList <AcconentInfo> (); AccountInfo Account = new AccountInfo (); Account.setId (3L); Account.setUsername ("Zhangsanfeng"); account.setPassword ("123456"); Account.setGender ("1"); account.setemail ("[email protected]"); account.setCreatedate (วันที่ใหม่ (System.CurrentTimeMillis ())); result.add (บัญชี); บัญชี = ใหม่ accountInfo (); Account.setId (4L); Account.setUserName ("Zhouzhiruo"); account.setPassword ("Zhangwuji"); Account.setGender ("0"); account.setemail ("[email protected]"); account.setCreatedate (วันที่ใหม่ (System.CurrentTimeMillis ())); result.add (บัญชี); บัญชี = ใหม่ accountInfo (); Account.setId (5L); Account.setUserName ("Zhaomin"); account.setPassword ("Zhangwuji"); Account.setGender ("0"); Account.setEmail ("[email protected]"); account.setCreatedate (วันที่ใหม่ (System.CurrentTimeMillis ())); result.add (บัญชี); ผลการกลับมา; -ดาวน์โหลดซอร์สโค้ด: http://xiazai.vevb.com/201606/yuanma/java-oracle(vevb.com).rar
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น