Récemment, j'ai rencontré un problème dans le projet: importez des données dans l'arrière-plan et insérez des données dans la base de données. Le montant des données importé a des dizaines de milliers de données et envisagez d'insérer des données par lots;
Sur la base des informations en ligne, j'ai écrit une petite démo, et l'adresse de téléchargement de démonstration a été jointe à la fin de l'article
1. Créer un nouveau projet: La structure du répertoire de projet est présentée dans la figure ci-dessous, ajoutez le package de pot correspondant
2. Créez une nouvelle table de base de données: account_info
Créer une table compte_info ("id" numéro (12) pas null, "nom d'utilisateur" varchar2 (64 byte) null, "mot de passe" varchar2 (64 byte) null, "genre" char (1 byte) null, "e-mail" varchar2 (64 byte) null, "create_date" date null) 3. Créez une classe d'entité compte de compte:
package com.oracle.entity; import java.sql.date; classe publique accountInfo {private long id; Nom d'utilisateur de chaîne privée; mot de passe de chaîne privé; Gender de chaîne privée; e-mail de chaîne privée; Date privée CréationDate; public long getID () {return id; } public void setid (long id) {this.id = id; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public String getgender () {return Gender; } public void setGender (String Sexe) {this.gender = genre; } public String getEmail () {return e-mail; } public void setEmail (chaîne e-mail) {this.email = e-mail; } public Date getCreatEdate () {return CreateDate; } public void setCreatEdate (date créée) {this.createdate = CreateDate; } @Override public String toString () {return "accountInfo [id =" + id + ", username =" + username + ", mot de passe =" + mot de passe + ", sexe =" + sexe + ", email =" + email + ", créationDate =" + CreateDate + "]"; }} 4. Créer une nouvelle classe de mappage d'interface: accountInfomapper.java
package com.oracle.mapper; import java.util.list; import com.oracle.entity.accountInfo; interface publique accountInfoMapper {/ ** * requêtes toutes les données * @return * / list <accouLinfo> queryAllAccountInfo (); / ** * Données d'insertion par lots * * @param accountInfolist * @return * / int BatchInsertAccountInfo (list <accouLinfo> accountInfolist);}5. Créer un fichier de configuration MyBatis: mybatis-configuration.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3config.dtd"> <configuration> <Environments par défaut = "Development"> <ovelong <transactionManager type = "jdbc" /> <dataSource type = "poolled"> <propriété name = "driver" value = "oracle.jdbc.driver.oracledriver" /> <propriété name = "url" value = "jdbc: oracle: mince: @Localhost: 1521: ORCL" /> <propriété name = "usAname" value "value =" xx " Value = "xxx" /> </ DataSource> </ Environment> </ Environments> <Mappers> <Mapper Resource = "Config / AccountInfoMapper.xml" /> </mappers> </ / Configuration>
6. Créer un fichier de configuration de mappage d'interface: accountInfoMapper.xml
La base de données d'insertion par lots d'Oracle est différente de MySQL.
Mysql:
La copie de code est la suivante: Insérer dans compte_info (id, nom d'utilisateur, mot de passe, genre, e-mail, création_date) valeurs (,,,,,) (,,,,,,)
Oracle:
Copiez le code comme suit: Insérer dans compte_info (id, nom d'utilisateur, mot de passe, sexe, e-mail, create_date) (sélectionnez 1 ,,,,,, FROM UNION DUAL TOUS SELECT 1 ,,,,,,, FROM DUAL)
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><Mapper namespace = "com.oracle.mapper.AccountInfoMapper"> <! - Nom de la classe complète de l'interface -> <! - Type: Nom complet de la classe de la classe d'entité -> <ResultMap id = "BaseresultMap" Type = "com.oracle.entity.accountInfo"> <id Column = "id" Property = "id" jdbcType = "Decimal"! propriété = "username" jdbcType = "varchar" /> <résultat chronn = "mot de passe" propriété = "mot de passe" jdbcType = "varchar" /> <result Column = "Gender" propriété = "Gender" JDBCTYPE = "char" /> <résultat Column = "e-mail" Property = "Email" JDBCTYPE = "Varcha propriété = "CreateDate" JDBCTYPE = "DATE" /> </ RESTCULSMAP> <! - L'ID est cohérent avec le nom de la méthode dans l'interface -> <Select Id = "QueryAllAccountInfo" ResultMap = "BaseresultMap"> SELECT ID, Username, Mot de passe, Gender, Batchinsert Contount Counttin " ParameterType = "java.util.list"> insérer dans account_info (id, nom d'utilisateur, mot de passe, genre, e-mail, create_date) (<foreach collection = "list" index = "" item = "accountInfo" séparateur = "Union all"> select # {accountInfo.id}, # {compteInfo.username}, # # #}, #}, comptac # {AccountInfo.gender}, # {accountInfo.email}, # {accountInfo.Createdate} de Dual </Foreach>) </Sersert> </ Mapper> 7. Écrivez des classes de test:
package com.oracle.test; import java.io.inputStream; import java.sql.date; import java.util.arraylist; import java.util.list; import java.util.list; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlssion org.apache.ibatis.session.sqlSessionFactoryBuilder; import com.oracle.entity.accountInfo; import com.oracle.mapper.accountInfomapper; public class mybatistest {public static void main (string [] args) lance une exception {string ressource = "config / mybatis-ononfiguration.xml; InputStream inputStream = Resources.getResourceSstream (ressource); SQLSessionFactory SessionFactory = new SQLSessionFactoryBuilder () .Build (InputStream); SqlSession Session = SessionFactory.OpenSession (); AccountInfoMapper Mappen = Session.getMapper (accountInfoMapper.class); List <CountInfo> accountInfolist = mAper.QueryAllAccountInfo (); if (accountInfolist == null) {System.out.println ("Le résultat est nul."); } else {for (acteInfo PersonInfo: accountInfolist) {System.out.println (PersonInfo); }} mapper.batchInsertAccountInfo (généréaData ()); session.Commit (); } static list <CountInfo> généréedata () {list <CountInfo> result = new ArrayList <CountInfo> (); AccountInfo Compte = new accountInfo (); account.setid (3l); account.setUsername ("zhangsanfeng"); account.setPassword ("123456"); account.setgender ("1"); account.setemail ("[email protected]"); account.setCreatEdate (nouvelle date (System.CurrentTimeMillis ())); résultat.add (compte); compte = nouveau compteInfo (); account.setid (4l); account.sesername ("Zhouzhiruo"); account.setPassword ("Zhangwuji"); account.setgender ("0"); account.setemail ("[email protected]"); account.setCreatEdate (nouvelle date (System.CurrentTimeMillis ())); résultat.add (compte); compte = nouveau compteInfo (); account.setid (5l); account.sesername ("zhaomin"); account.setPassword ("Zhangwuji"); account.setgender ("0"); account.setemail ("[email protected]"); account.setCreatEdate (nouvelle date (System.CurrentTimeMillis ())); résultat.add (compte); Résultat de retour; }}Téléchargement du code source: http://xiazai.vevb.com/201606/yuanma/java-oracle(vevb.com).rar
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.