Ao trabalhar em projetos, a seleção técnica é muito importante. O método subjacente afeta diretamente nossa velocidade de acesso e modificação de big data. Existem muitas estruturas ORM excelentes em Java, como JPA, Hibernate etc. Como dissemos, as estruturas têm os benefícios das estruturas e, é claro, existem algumas áreas que podem ser melhoradas. Nesse momento, precisamos reencapsular a arquitetura subjacente para diferentes necessidades de negócios e diferentes visitas para suportar a adição, exclusão e modificação de big data.
Código:
importar java.io.*; importar java.sql.*; importar java.util.logging.level; importar java.util.logging.logger; importar javax.servlet.jsp.jstl.sql.*; / ** * dbhelper * @author qmx * */ public class Dbhelper {private string sql; // A instrução SQL a ser aprovada public void Setsql (String sql) {this.sql = sql; } lista privada sqlvalues; // Parâmetros do sistema da instrução sql public void SetsqlValues (list sqlValues) {this.sqlValues = sqlValues; } Lista privada <List> sqlValue; // Parâmetros do sistema da instrução sql public void SetsqlValue (list <list> sqlValues) {this.sqlValue = sqlValues; } conexão privada con; // Objeto de conexão public void SetCon (conexão con) {this.con = con; } public dbhelper () {this.con = getConnection (); // Atribua valor inicial ao objeto de conexão}/*** Obtenha conexão com o banco de dados* @return*/conexão privada getConnection () {string driver_class = null; String driver_url = null; String database_user = null; String database_password = null; tente {inputStream fis = this.getclass (). getResourceasStream ("/db.properties"); // Carregar o arquivo de configuração do banco de dados nas propriedades da memória p = new Properties (); P.load (fis); driver_class = p.getProperty ("driver_class"); // Obtenha o arquivo de configuração do banco de dados driver_url = p.getProperty ("driver_url"); database_user = p.getProperty ("database_user"); Database_password = p.getProperty ("Database_password"); Classe.ForName (driver_class); con = driverManager.getConnection (driver_url, database_user, database_password); } catch (classNotFoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } catch (fileNotfoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); } retornar con; } / ** * Feche o banco de dados * @param con * @param pst * @param rst * / private void closell (conexão con, preparado pstatement pst, resultSet rst) {if (rst! = Null) {tente {rst.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (pst! = null) {tente {pst.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (con! = null) {try {con.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (con! = null) {try {con.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (con! = null) {try {con.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }}}} / ** * Feche o banco de dados * @param con * @param pst * @param rst * / private void closealll (conexão con, declaração pst, resultado rst) {if (rst! = Null) {try {rst.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (pst! = null) {tente {pst.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (pst! = null) {tente {pst.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} if (con! = null) {try {con.close (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }}} / ** * encontre * @param sql * @param sqlvalues * @return * / public resultado executeQuery () {resultado resultado = null; ResultSet RST = NULL; Preparado Pstatement Pst = NULL; tente {pst = con.preparestatement (sql); if (sqlvalues! = null && sqlvalues.size ()> 0) {// Quando um espaço reservado existe em uma instrução SQL, setSqlValues (pst, sqlvalues); } rst = pst.executeQuery (); resultado = Resultadopport.toresult (RST); // Certifique-se de concluir a conversão antes de fechar o banco de dados} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PrintStackTrace (); } finalmente {this.closeAll (con, pst, rst); } resultado de retorno; } / ** * Adicionar, excluir, modificar, * @return * / public int ExecuteUpdate () {int resultado = -1; Preparado Pstatement Pst = NULL; tente {pst = con.preparestatement (sql); if (sqlvalues! = null && sqlvalues.size ()> 0) {// Quando um espaço reservado existe em uma instrução SQL SetsqlValues (pst, sqlvalues); } resultado = pst.executeUpdate (); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } finalmente {this.closeAll (con, pst, null); } resultado de retorno; } / *** Método usando o preparado estatamento para adicionar lotes* @return* / public int [] ExecuteUpDatemore () {int [] resultado = null; tente {preparadostatement pret = con.preparestatement (sql, resultSet.type_scroll_sensitive, resultSet.concur_read_only); para (list sqlvaluestring: sqlValue) {for (int i = 0; i <sqlValuestring.size (); i ++) {try {prest.setObject (i+1, sqlValuestring.get (i)); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} prest.addbatch (); } prest.executeBatch (); /* CO.Commit ();*/ this.closeAll (con, press, nulo); } catch (sqLexception ex) {logger.getLogger (dbhelper.class.getName ()). log (Level.severe, null, ex); } resultado de retorno; } / ** * Use PreparedStatement para adicionar o método em lote, strvalue: * "Insira INAdlogs (IP, site, yyyymmdd, hora, object_id) valores ('192.168.1.3', 'localhost', '20081009', 8, '23123'), * * @ -return *TH ' * @' @Return * @'20081009', 8, '23123')" * @ -return * *. ExecuteUpDatemorEnotaUto () lança SQLEXCIPCECCIONAL {int [] resultado = null; Con.SetAutocomit (false); Instrução stmt = con.createstatement (resultSet.type_scroll_sensitive, resultSet.concur_read_only); String [] SQLSTRING = NULL; para (string strvalue: sqlString) {stmt.execute (strvalue); } Con.Commit (); resultado de retorno; } / ** * Use PreparedStatement para adicionar o método em lote, strvalue: * "Insira INADLOGS (IP, site, yyyymmdd, hora, object_id) valores ('192.168.1.3', 'localothost', '20081009', 8, '23123')" * @ -return *THR ' *. SqLexception {// Salvar o modo de submissão automática atual booleana booleanautocommit = false; String [] SQLSTRING = NULL; int [] resultado = nulo; tente {booleanautocommit = con.getautocommit (); // fechar o envio automático con.setaToToMit (false); Instrução stmt = con.createstatement (resultSet.type_scroll_sensitive, resultSet.concur_read_only); // Use a instrução para coletar várias instruções SQL ao mesmo tempo/*stmt.addbatch (insert_sql1); stmt.addbatch (insert_sql2); stmt.addbatch (update_sql3); */ for (string strvalue: sqlString) {stmt.addbatch (strvalue); } // Envie todas as instruções SQL ao mesmo tempo STMT.EXECUTEBATCH (); // Enviar modificação Con.Commit (); Con.SetAutocommit (Booleanautocomit); this.closeAll (con, stmt, nulo); } catch (Exceção e) {e.printStackTrace (); con.rollback (); // Definir setautocomit (false) não executa a operação de reversão da conexão na captura, e a tabela da operação será bloqueada, fazendo com que o banco de dados seja impassível} Resultado de retorno; } / ** * Atribua um valor ao espaço reservado na instrução SQL * @param pst * @param sqlvalues * / private void SetsqlValues (preparado PST, list sqlvalues) {para (int i = 0; i <sqlvalues.size (); i ++) {{{pST.s.set.St.St.St.St.St.St.St. } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }}}}}} Nossas informações de gravação para acessar o banco de dados em db.properties:
driver_class = com.mysql.jdbc.driver driver_url = jdbc: mysql: //192.168.22.246: 3306/importExCeltest Database_user = Basic Database_password = Basic
teste:
importar java.util.*; classe pública ImportExCelTest {public static void main (string [] args) { /*dbhelper db = new dbhelper (); String sql = "Inserir no TB_CourSetype (ID, CourSetypeName) valores ('2012003', 'qmx3')"; db.Setsql (SQL); db.executeUpdate ();* / /*dbhelper db1 = new dbhelper (); String sql1 = "Inserir em TB_CourSetype (ID, CoursetypeName) valores (?,?)"; List sqlvalues = new ArrayList (); sqlvalues.add ("2012004"); sqlvalues.add ("qmx4"); db1.setsqlvalues (sqlvalues); db1.setsql (SQL1); db1.executeUpdate ();*/ dbhelper db = new dbhelper (); String sql = "inserir em tb_courSetype (id, cortesetypeName) valores (?,?)"; List <List> sqlvalues = new ArrayList (); List sqlvaluestring = new ArrayList (); sqlvaluestring.add ("2012010"); sqlvaluestring.add ("qmx10"); sqlvalues.add (sqlvaluestring); Lista sqlValuestring1 = new ArrayList (); sqlvaluestring1.add ("2012011"); sqlvaluestring1.add ("qmx11"); sqlvalues.add (sqlvaluestring1); Lista sqlvaluestring2 = new ArrayList (); sqlvaluestring2.add ("2012012"); sqlvaluestring2.add ("qmx12"); sqlvalues.add (sqlvaluestring2); List sqlvaluestring3 = new ArrayList (); sqlvaluestring3.add ("2012013"); sqlValuestring3.add ("qmx13"); sqlvalues.add (sqlvaluestring3); db.SetsqlValue (SQLValues); db.Setsql (SQL); db.executeUpdatemore (); }}