عند العمل في المشاريع ، يعد الاختيار الفني مهمًا للغاية. تؤثر الطريقة الأساسية بشكل مباشر على سرعة الوصول إلى البيانات الكبيرة وتعديلها. هناك العديد من أطر عمل ORM الممتازة في Java ، مثل JPA ، و Hibernate ، وما إلى ذلك ، كما قلنا ، يتمتع الأطر بفوائد الأطر ، وبالطبع هناك بعض المجالات التي يمكن تحسينها. في هذا الوقت ، نحتاج إلى إعادة تشكيل الهندسة المعمارية الأساسية لتلبية احتياجات العمل المختلفة وزيارات مختلفة لدعم إضافة البيانات الكبيرة والحذف والتعديل.
شفرة:
استيراد java.io.*؛ استيراد java.sql.*؛ استيراد java.util.logging.level ؛ استيراد java.util.logging.logger ؛ استيراد javax.servlet.jsp.jstl.sql.*؛ / ** * dbhelper * author qmx * */ public class dbhelper {private string sql ؛ // عبارة SQL المراد إقرارها setSQL (سلسلة SQL) {this.sql = sql ؛ } قائمة خاصة sqlvalues ؛ // معلمات النظام لبيان SQL public setSqlValues (قائمة sqlvalues) {this.sqlvalues = sqlvalues ؛ } قائمة خاصة <list> sqlvalue ؛ // معلمات النظام لبيان SQL public setSqlValue (قائمة <list> sqlvalues) {this.sqlvalue = sqlvalues ؛ } اتصال خاص يخدع ؛ // connection object public void setCon (connection con) {this.con = con ؛ } public dbhelper () {this.con = getConnection () ؛ // تعيين القيمة الأولية لكائن الاتصال}/*** احصل على اتصال قاعدة البيانات* regurn*/private connection getConnection () {String driver_class = null ؛ String driver_url = null ؛ سلسلة database_user = null ؛ سلسلة database_password = null ؛ حاول {inputStream fis = this.getClass (). getResourCeasStream ("/db.properties") ؛ // قم بتحميل ملف تكوين قاعدة البيانات في خصائص الذاكرة p = خصائص جديدة () ؛ p.load (FIS) ؛ driver_class = p.getProperty ("driver_class") ؛ // احصل على ملف Configuration File 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 catch catch e.printstacktrace () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ } catch (fileNotfoundException e) {// todo catch catch e.printstacktrace () ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ } إرجاع الخداع ؛ } / ** * أغلق قاعدة البيانات * param con * param pSt * param rst * / private void closeall (connection con ، preparedStatement pst ، resultset rst) {if (rst! = null) {try {rst.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (pst! = null) {try {pst.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (con! = null) {try {con.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (con! = null) {try {con.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (con! = null) {try {con.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }}}} / ** * أغلق قاعدة البيانات * param con * param pst * param rst * / private void closeall (connection con ، state pst ، resterset rst) {if (rst! = null) {try {rst.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (pst! = null) {try {pst.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (pst! = null) {try {pst.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} if (con! = null) {try {con.close () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }}} / ** * find * param sql * param sqlvalues * return * / public result executequery () {result result = null ؛ Resprodet RST = NULL ؛ أعدت PST = NULL ؛ حاول {pst = con.preparestatement (sql) ؛ if (sqlvalues! = null && sqlvalues.size ()> 0) {// عندما يوجد عنصر نائب في عبارة SQL ، setSqlValues (pst ، sqlvalues) ؛ } rst = pst.executequery () ؛ النتيجة = النتائج Upport.toresult (RST) ؛ // تأكد من إكمال التحويل قبل إغلاق قاعدة البيانات} catch (sqlexception e) {// todo catch e.printstacktrace () ؛ } أخيرًا {this.closeall (con ، pst ، rst) ؛ } نتيجة الإرجاع ؛ } / ** * إضافة ، حذف ، تعديل ، * regurn * / public int executeupdate () {int result = -1 ؛ أعدت PST = NULL ؛ حاول {pst = con.preparestatement (sql) ؛ if (sqlvalues! = null && sqlvalues.size ()> 0) {// عندما يوجد عنصر نائب في عبارة SQL SETSQLValues (PST ، SQLValues) ؛ } النتيجة = pst.executeupdate () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ } أخيرًا {this.closeall (con ، pst ، null) ؛ } نتيجة الإرجاع ؛ } / *** الطريقة باستخدام reparedStatement لإضافة دفعات* regurn* / public int [] executeupdatemore () {int [] result = null ؛ جرب {preparedStatement perst = con.preparestatement (sql ، resultset.type_scroll_sensitive ، resultset.concur_read_only) ؛ لـ (قائمة sqlvaluestring: sqlvalue) {for (int i = 0 ؛ i <sqlvaluestring.size () ؛ i ++) {try {prest.setObject (i+1 ، sqlvaluestring.get (i)) ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }} prest.addbatch () ؛ } prest.executeBatch () ؛ /* con.Commit () ؛*/ this.closeall (con ، perst ، null) ؛ } catch (sqlexception ex) {logger.getLogger (dbhelper.class.getName ()). log (level.severe ، null ، ex) ؛ } نتيجة الإرجاع ؛ } / ** * استخدم reparedStatement لإضافة طريقة الدُفعات ، strvalue: * "insert IntoDlogs (IP ، موقع الويب ، yyyymmdd ، ساعة ، object_id) ('192.168.1.3' ، 'localhost' ، '20081009' ، 8 ، '23123') executeupdatemorenotauto () يلقي sqlexception {int [] result = null ؛ consetautocommit (false) ؛ بيان stmt = con.createstatement (resultset.type_scroll_sensitive ، resultset.concur_read_only) ؛ سلسلة [] sqlstring = null ؛ لـ (String strvalue: sqlstring) {stmt.execute (strvalue) ؛ } con.Commit () ؛ نتيجة العودة } / ** * استخدم reparedStatement لإضافة طريقة الدُفعة ، strvalue: * "أدخل intoadlogs (IP ، موقع الويب ، yyyymmdd ، ساعة ، object_id) ('192.168.1.3' ، 'localhost' ، '20081009' ، 8 ، '23123') sqlexception {// حفظ وضع التقديم التلقائي الحالي booleanautocommit = false ؛ سلسلة [] sqlstring = null ؛ int [] النتيجة = فارغة ؛ حاول {booleanautocommit = con.getautocommit () ؛ // إغلاق التقديم التلقائي con.setautocommit (false) ؛ بيان stmt = con.createstatement (resultset.type_scroll_sensitive ، resultset.concur_read_only) ؛ // استخدم بيان لجمع عبارات SQL متعددة في نفس الوقت/*stmt.addbatch (insert_sql1) ؛ stmt.addbatch (insert_sql2) ؛ stmt.addbatch (update_sql3) ؛ */ for (String strvalue: sqlstring) {stmt.addbatch (strvalue) ؛ } // إرسال جميع عبارات SQL في نفس الوقت STMT.ExecuteBatch () ؛ // إرسال التعديل con.Commit () ؛ ConsetAutocommit (Booleanautocommit) ؛ this.closeall (con ، stmt ، null) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ con.rollback () ؛ // set setautocommit (false) لا يؤدي تشغيل التراجع للاتصال في الصيد ، وسيتم قفل جدول العملية ، مما يتسبب في أن قاعدة البيانات قد تم سقوطها. ستر pst.setObject (i+1 ، sqlvalues.get (i)) ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ }}}}}} معلومات الكتابة الخاصة بنا للوصول إلى قاعدة البيانات في db.properties:
driver_class = com.mysql.jdbc.driver driver_url = jdbc: mysql: //192.168.22.246: 3306/importexceltest database_user = basic database_password = basic
امتحان:
استيراد java.util.*؛ الفئة العامة ImportExceltest {public static void main (string [] args) { /*dbhelper db = new dbhelper () ؛ String sql = "insert in tb_coursetype (id ، coursetypename) قيم ('2012003' ، 'qmx3')" ؛ db.setsql (SQL) ؛ db.executeupdate () ؛* / /*dbhelper db1 = new dbhelper () ؛ String sql1 = "insert في TB_CourSetyPe (id ، coursetypename) قيم (؟ ،؟)" ؛ قائمة sqlvalues = new ArrayList () ؛ sqlvalues.add ("2012004") ؛ sqlvalues.add ("qmx4") ؛ db1.SetSqlValues (sqlvalues) ؛ db1.setsql (sql1) ؛ db1.executeupdate () ؛*/ dbhelper db = new dbhelper () ؛ String sql = "insert in tb_coursetype (id ، coursetypename) قيم (؟ ،؟)" ؛ قائمة <list> sqlvalues = new ArrayList () ؛ قائمة sqlvaluestring = new ArrayList () ؛ sqlvaluestring.add ("2012010") ؛ sqlvaluestring.add ("qmx10") ؛ sqlvalues.add (sqlvaluestring) ؛ قائمة sqlvaluestring1 = new ArrayList () ؛ sqlvaluestring1.add ("2012011") ؛ sqlvaluestring1.add ("QMX11") ؛ sqlvalues.add (sqlvaluestring1) ؛ قائمة sqlvaluestring2 = new ArrayList () ؛ sqlvaluestring2.add ("2012012") ؛ sqlvaluestring2.add ("QMX12") ؛ sqlvalues.add (sqlvaluestring2) ؛ قائمة sqlvaluestring3 = new ArrayList () ؛ sqlvaluestring3.add ("2012013") ؛ sqlvaluestring3.add ("qmx13") ؛ sqlvalues.add (sqlvaluestring3) ؛ db.setsqlvalue (sqlvalues) ؛ db.setsql (SQL) ؛ db.executeupdatemore () ؛ }}