Lorsque vous travaillez sur des projets, la sélection technique est très importante. La méthode sous-jacente affecte directement notre vitesse d'accès et de modification des mégadonnées. Il existe de nombreux excellents cadres ORM en Java, comme le JPA, l'hibernate, etc. Comme nous l'avons dit, les cadres ont les avantages des cadres, et bien sûr, certains domaines peuvent être améliorés. À l'heure actuelle, nous devons recaper l'architecture sous-jacente pour différents besoins commerciaux et différentes visites pour soutenir l'ajout, la suppression et la modification des mégadonnées.
Code:
importer java.io. *; Importer java.sql. *; import java.util.logging.level; import java.util.logging.logger; import javax.servlet.jsp.jstl.sql. *; / ** * dbhelper * @author qmx * * / public class dbhelper {private String sql; // L'instruction SQL à passer public void setsql (String SQL) {this.sql = sql; } liste privée sqlvalues; // Paramètres système de l'instruction SQL public void setsqlvalues (list sqlvalues) {this.sqlvalues = sqlvalues; } Liste privée <s liste> SQLVALUE; // Paramètres système de l'instruction SQL public void setsqlvalue (list <s list> sqlvalues) {this.sqlvalue = sqlValues; } connexion privée con; // Connexion Object public void setCon (Connection Con) {this.con = con; } public dbHelper () {this.con = getConnection (); // Attribuez une valeur initiale à l'objet de connexion} / ** * Obtenez la connexion de la base de données * @return * / connexion privée getConnection () {String driver_class = null; String driver_url = null; String database_user = null; String database_password = null; essayez {inputStream fis = this.getClass (). getResourCeasStream ("/ db.properties"); // Chargez le fichier de configuration de la base de données dans les propriétés de mémoire p = news properties (); P.Load (FIS); driver_class = p.getProperty ("driver_class"); // Obtenez le fichier de configuration de la base de données Driver_url = p.getProperty ("Driver_Url"); database_user = p.getProperty ("database_user"); database_password = p.getProperty ("database_password"); Class.forname (driver_class); con = driverManager.getConnection (driver_url, database_user, database_password); } catch (classNotFoundException e) {// TODO Generated Catch Block E.PrintStackTrace (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } catch (filenotfoundException e) {// TODO Block de capture généré automatiquement e.printStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } return con; } / ** * Fermez la base de données * @param con * @param pst * @param rst * / private void fermall (connection con, préparestatement pst, resultset rst) {if (rst! = Null) {try {rst.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}}} / ** * Fermez la base de données * @param con * @param PST * @param RST * / private void fermall (Connection Con, instruction PST, ResultSet rst) {if (rst! = Null) {try {rst.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (pst! = null) {try {pst.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} if (con! = null) {try {con.close (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}} / ** * Find * @param sql * @param sqlvalues * @return * / public result executequery () {result result = null; ResultSet RST = null; PréparetStatement PST = NULL; try {pst = con.prepareStatement (sql); if (sqlValues! = null && sqlvalues.size ()> 0) {// Lorsqu'un placement existant dans une instruction SQL, setsqlValues (pst, sqlValues); } RST = PST.ExecuteQuery (); result = resultsupport.toresult (RST); // Assurez-vous de terminer la conversion avant de fermer la base de données} Catch (SQLEXception E) {// TODO GÉNÉRÉ AUTO GÉNÉRÉ BLOC E.PRINTSTACKTRACE (); } Enfin {this.closeAll (Con, PST, RST); } Retour Résultat; } / ** * Ajouter, supprimer, modifier, * @return * / public int executeUpdate () {int result = -1; PréparetStatement PST = NULL; try {pst = con.prepareStatement (sql); if (sqlValues! = null && sqlvalues.size ()> 0) {// Lorsqu'un placement existant dans une instruction SQL setSQLValues (pst, sqlValues); } result = pst.executeupdate (); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } enfin {this.closeAll (con, pst, null); } Retour Résultat; } / ** * Méthode Utilisation de PreadStatement pour ajouter des lots * @return * / public int [] executeUpDateMore () {int [] result = null; try {préparéStatement perst = con.preparestatement (sql, resultSet.type_scroll_sensitive, resultSet.concur_read_only); for (list SqlValueString: sqlValue) {for (int i = 0; i <sqlValueString.size (); i ++) {try {prest.setObject (i + 1, sqlValueString.get (i)); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} prest.addbatch (); } prest.executeBatch (); / * con.Commit (); * / this.closeall (con, perst, null); } catch (sqlexception ex) {logger.getLogger (dbhelper.class.getName ()). log (niveau.severe, null, ex); } Retour Résultat; } / ** * Utilisez PreadStatement pour ajouter une méthode de lots, strValue: * "Insérer des valeurs dans les aadlogs (IP, site Web, yyyymmdd, hour, object_id) ('192.168.1.3', 'localhost', '20081009', 8, '23123')" * @return * @throws sqlexception * / public int [] executeUpDateMorenotAuto () lève SQException {int [] result = null; con.setAutoCommit (false); Instruction stmt = con.creatEstatement (resultSet.type_scroll_sentifie, resultSet.concur_read_only); String [] sqlString = null; for (String strValue: sqlString) {stmt.Execute (strValue); } con.Commit (); Résultat de retour; } / ** * Utilisez PreadStatement pour ajouter une méthode de lots, strvalue: * "Insérer des valeurs dans les aadlogs (IP, site Web, yyyymmdd, hour, object_id) ('192.168.1.3', 'localhost', '20081009', 8, '23123')" * @return * @throws sqlexception * / public int [] exidèle SQLEXception {// Enregistrer le mode de soumission automatique actuel booléen booleanautoMit = false; String [] sqlString = null; int [] result = null; essayez {booleAnautoCommit = con.getAutoCommit (); // fermer la soumission automatique con.setAutoCommit (false); Instruction stmt = con.creatEstatement (resultSet.type_scroll_sentifie, resultSet.concur_read_only); // Utiliser l'instruction pour collecter plusieurs instructions SQL en même temps / * stmt.addbatch (insert_sql1); stmt.addbatch (insert_sql2); stmt.addbatch (update_sql3); * / for (String strValue: sqlString) {stmt.addbatch (strValue); } // Soumettez toutes les instructions SQL en même temps stmt.ExecuteBatch (); // Soumettre la modification con.Commit (); con.setAutoCommit (booleanautoCommit); this.closeall (con, stmt, null); } catch (exception e) {e.printStackTrace (); con.rollback (); // set setAutoCommit (false) n'effectue pas le fonctionnement en arrière de la connexion dans la capture, et le tableau de l'opération sera verrouillé, ce qui fait que la base de données est bloquée} Retour; } / ** * Attribuez une valeur à l'espace réservé dans l'instruction SQL * @param PST * @param sqlvalues * / private void setsqlValues (préparé PST, liste sqlvalues) {pour (int i = 0; i <sqlvalues.size (); i ++) {essai { pst.setObject (i + 1, sqlvalues.get (i)); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }}}}}} Nos informations d'écriture pour accéder à la base de données dans DB.Properties:
driver_class = com.mysql.jdbc.driver Driver_Url = jdbc: mysql: //192.168.22.246: 3306 / importExCeltest Database_User = Basic Database_Password = Basic
test:
import java.util. *; classe publique importExCeltSt {public static void main (String [] args) {/ * dbhelper db = new dbHelper (); String sql = "INSERT INTO TB_CORSETYPE (ID, COURSETYPENAME) ('2012003', 'qmx3')"; DB.SETSQL (SQL); db.executeupdate (); * / / * dbHelper db1 = new dbHelper (); String sql1 = "INSERT INTO TB_CORSETYPE (ID, COURSETYPENAME) (?,?)"; List sqlvalues = new ArrayList (); sqlvalues.add ("2012004"); sqlvalues.add ("qmx4"); DB1.SETSQLVALUES (SQLVALUES); DB1.SETSQL (SQL1); db1.executeupdate (); * / dbHelper db = new dbHelper (); String sql = "INSERT INTO TB_CORSETYPE (ID, COURSETYPENAME) (?,?)"; List <s list> sqlValues = new ArrayList (); List sqlvaluestring = new ArrayList (); sqlvaluesring.add ("2012010"); SqlValueString.Add ("qmx10"); SQLVALUES.ADD (SQLVALUESTRING); Liste sqlValueString1 = new ArrayList (); SQLVALUESTRING1.ADD ("2012011"); sqlvaluesring1.add ("qmx11"); SQLVALUES.ADD (SQLVALUESTRING1); Liste sqlValueString2 = new ArrayList (); SQLVALUESTRING2.ADD ("2012012"); SQLVALUESTRING2.ADD ("QMX12"); SQLVALUES.ADD (SQLVALUESTRING2); List SqlValueString3 = new ArrayList (); SQLVALUESTRING3.Add ("2012013"); SQLVALUESTRING3.Add ("qmx13"); sqlvalues.add (sqlvaluesring3); DB.SETSQLVALUE (SQLVALUES); DB.SETSQL (SQL); db.executeUpDateMore (); }}