Ada banyak kerangka kerja untuk manajemen data di Java, seperti Hibernate, Mybatis, dll., Tetapi apa yang saya pelajari di awal adalah JDBC. Saya pikir JDBC masih sangat bagus. Ini memungkinkan saya untuk memahami operasi data lebih dalam. Hari ini saya akan menulis kelas JDBC dasar yang saya tulis lagi! Memperdalam ingatan! Lai Lai
Posting Pertama Kelas Implementasi Tambahan Umum Berdasarkan
Paket com.shude.dao; impor java.lang.reflect.field; impor java.lang.reflect.method; import java.lang.reflect.parametersizedType; import java.lang.reflect.type; impor java.sql.connection; impor java. java.sql.preparedstatement; impor java.sql.resultset; impor java.sql.sqlexception; impor java.util.arraylist; import java.util.linkedhashmap; impor java.util.list; impor java.util.raapap; com.shude.dao.im.ibaseoo; import com.shude.util.configutil; import com.shude.util.jdbcutil; import com.shude.util.pageutil;/** @param <e> {e -nased {e -nased/@Author administrator @Author * @param <e e> konfigutil konfigutil statis; kelas yang dilindungi <?> cls;/*** Dapatkan nama paket dan nama kelas*/public -bedandedAo () {class <?> clstemp = this.getClass (); type type = clstemp.getGenericSuperclass (); if (typeEntypeizezedypype) {typeEgReMer (] (PARAMETLUMENT (PARAMET (); if (type) {typeEgleted (PARAMET (PARAMET) (TYPEEGLEX) {typeEgLETS (PARAMET) {typeURSEUTES (PARAMET (PARAMETEUTEUTE) (Class<?>) types[0];}}/** * Get the table name in the database of the corresponding class*/static{configUtil = ConfigUtil.newInstance("/tabORM.properties");}/** * Save method*/public boolean saveInfo(E e) {boolean flag = true;try {Class<?> cls = e.getClass();//Get the table name String tableName = configUtil.getVal(cls.getName());//Get the primary key String prykey = getPrimKey(tableName);//Record the data column List<String> filedList = new ArrayList<String>();//Get the sql statement String sql = getsavesql(tableName,prykey,fileedList);//Execute sqlflag = exclusiveSQL(sql,e,fileedList);} catch (Exception e1) {flag = false;e1.printStackTrace();}return flag;}/** * Modify method*/public void modifyInfo(E e) {Class<?> cls = e.getClass();//Get the table name String tableName = configutil.getVal (cls.getname ()); // Dapatkan tombol utama string prykey = getPrimKey (tableName); // Catat daftar kolom data <string> fileDlist = new ArrayList <String> (); // Dapatkan SQL Pernyataan String SQL = GetModifySQL (TableName, Prykey, Filed, Filed SQL (GetModifySQL (TableName, Prykey, Prykey, Filed SQL) ke SQL (GetModifySQL (TableName, Prykey, Prykey, Filed SQL); filedList.add(prykey);//Execute sqlexcuteSQL(sql,e,filedList);} /** * Delete method*/public void deleteInfo(Object id) {//Get the table name String tableName = configUtil.getVal(cls.getName());//Get the primary key String prykey = getPrimKey(tableName);//Get the sql Pernyataan String SQL = "UPDATE"+Tablename+"Set Status = '1' di mana"+prykey+"=?"; koneksi conn = null; disiapkan pstm = null; coba {conn = jdbcutil.getConn (); pstm = conn.prepareStAtement (sql); pstmetobject (1, pstm = conn.prepareStAtement (sql); pstm.smject (1, pstm = conn.prepareStAtement (sql); pstm.smject (1, pstm = conn. {E.PrintStackTrace ();} akhirnya {jdbcutil.closeconn (conn);}}/*** Permintaan semua metode*/public void queryInfo (pageutil <e> pageutil) {e e = pageutil.getEntity (); // Dapatkan nama tabel name Tableutil) {e e = pageutil.getEntity ();/Get the Table Name name Tablename = configutil.getil.gete () () (Get the table name name Tablename = configutil.getil. Peta <String, Object> parammap = getParammap (e); // dapatkan sqlstring sql = getQuerySql (parammap, tableName); SQL += "Limit ?,?"; parammap.put ("pageSize", (pageutil.getPagesize () - 1)* pageutil.getpagenum ()); parammap.put ("pagenum", pageutil.getpagenum ()); // eksekusi sqlexcutcutcutil (single fierutil, singu, soyutil, singu, singu, single, single, single, single, single, single, single, singlne, singlne (pageutil, singlne (pageutil, singlne (pageUnm (single, Metode */public e queryById (ID objek) {// Dapatkan nama tabel string Tablename = configutil.getVal (cls.getname ()); // Dapatkan string kunci utama prykey = getPrimkey (tableName); // dapatkan sqlstring sql = "pilih * dari"+tableName+"di mana 1 dan"+pur = "+/sql =" SQL "dari"+Tablename+"di mana 1 dan"+pRycy = "pRy" = "///Tablename" di mana 1 dan "+pRy/pRy ="+"dari"+dari "+Tablename+" di mana 1 dan "+PRYKY =" PRY "dari"+dari "+Tablename+" di mana 1 dan "+"+pRy/pRy = "+dari"+dari "+"+"di mana 1 dan"+"+pRy ="+"+"+"+"+" null; disiapkan pstm = null; hasil rs = null; e e = null; coba {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); pstm.setObject (1, id); rs = pStm.executeQuery (); list. Daftar <1, list = rs = pstm.exeCuteQuery (); Daftar <E> <1, ID); rs = pstM.ExecuteQuery (); Daftar <e> <e> (Exception ex) {ex.printStackTrace();} finally{JdbcUtil.closeConn(conn);}return e;}/** * Get the total number of digits* @param paramMap * @param tableName * @return */ private Integer getPagenumss(Map<String, Object> paramMap, String tableName) { parammap.remove ("pagesize"); parammap.remove ("pagenum"); string sql = getQuerySql (parammap, tableName); sql = "pilih count (*) dari ("+sql+") connum = connection conn = null; disiapkan pstm = null = null; = Jdbcutil.getConn (); pstm = conn.prepareStatement (sql); int i = 1; untuk (entri <string, objek> entri: parammap.entryset ()) {objek val = entry.getValue (); if (val instance dari java.Lang.string) {pstm.setstring (); if val dari java.Lang.string) {pstm.setstring (); "%"+val.toString ()+"%");} else if (val instanceof java.lang.integer) {pstm.setint (i, integer.parseint (val.tostring ()));} i ++;} rs = pstm.executeQuery (); while (rs.next ()) {pagenumsss = rs.getint (1);}} catch (exception e) {e.printstacktrace ();} akhirnya {jdbcutil.closeconn (conn);} return pagenumss;}/** * get query sql * @param Parammssss;}/** get query sql * @param Parammssss;}/** get query sql * @param Parammssss;}/** get query sql * @param Parammssss; getquerySQL(Map<String, Object> paramMap, String tableName) {StringBuffer sql = new StringBuffer();sql.append("select * from ").append(tableName).append(" where 1 = 1 and status='0' ");List<String> columnlist = getTableColumns(tableName);for (Entry<String,Object> entry : parammap.entryset ()) {string columnName = entry.getKey (); untuk (string colnname: columnlist) {if (colnname.equalsignorecase (columname)) {if (entry.getValue () instanceof java.lang.string). ? ");} else {sql.append (" dan ") .Append (columname) .Append (" =? ");} break;}}} return sql.toString ();} /** * Dapatkan kondisi kueri * @param e * @return * /private peta <string, objek> getParammap (e e) @param e * {paping * /private peta <string, objek> getparammap (e e) LinkedHashMap <String, Object> (); field [] fields = e.getClass (). GetDeclaredFields (); untuk (bidang bidang: bidang) {coba {field.setAccessible (true); objek val = get (e); if (val! = Null &&! " val);}} catch (Exception e1) {e1.printStackTrace();}} return paramMap;}/** * Get the primary key* @param tableName * @return */private String getPrimKey(String tableName) {Connection conn = null;DatabaseMetaData metaData = null;ResultSet rs = null;String primKeyName = null;try {conn = Jdbcutil.getConn (); metadata = conn.getMetadata (); rs = metadata.getPrimarykeys (conn.getCatalog (), null, tableName.touppercase ()); while (rs.next ()) {primeyname = rs.getString ("column_name");}} catch (sqlexception e) {e.printstacktrace ();} akhirnya {jdbcutil.closeconn (conn);} return primeyName;}/** Metode Simpan Save @param @param @param @param ** ** * @Return */private boolean booleansql (string sql, e entitas, daftar <string> fileDlist) {boolean flag = true; koneksi conn = null; disiapkan pstm = null; coba {conn = jdbcutil.getconn (); pstm = conn.preparestatement (sqUtList);/pstm = conn.prepareStatement (sqUtLis); = getFieldValue (entitas, columname); pstm.setObject (i, val); i ++;} pstm.execute ();} catch (sqlexception e1) {e1.printstacktrace (); flag = false;} akhirnya {jdbcutil.closeconn (conn);} @falping; Tablename * @param prykey * @param fileDlist * @return */private string getModifysql (string tableName, string prykey, list <ring> fileDlist) {stringBuffer sql = new stringBuffer (); sql.prespend ("update") .Append (tableName). Append (); SQL.Appen ("Update") .Append (TableName) .Append (); SQL. getTableColumns (tableName); untuk (string columnName: columnlist) {if (! columnName.equalsignorecase (prykey)) {fileDlist.add (columnName); sql.append (columnName) .Append ("=?,");}} if (sql.tostring). " StringBuffer(sql.substring(0,sql.length()-1));}sql.append(" where ").append(prykey).append("=?");return sql.toString();} /** * Execute all SQL * @param pageUtil * @param sql * @param paramMap * @param tableName */private void excutQuery(PageUtil<E> pageUtil, String sql, Map<String, Object> paramMap, String tableName) {Connection conn = null;PreparedStatement pstm = null;ResultSet rs = null;try {conn = JdbcUtil.getConn();pstm = conn.prepareStatement(sql);int i = 1;for (Entry<String,Object> entry : parammap.entryset ()) {objek val = entry.getValue (); if (val instanceof java.lang.string) {pstm.setstring (i, "%"+val.toString ()+"%");} lain if (val instanceof java.Lang.integer) {pstm.setinte (val, java. Integer.parseInt(val.toString()));}i++;}rs = pstm.executeQuery();List<E> list = getEntityList(rs);//Encapsulate query results pageUtil.setList(list);//Encapsulate total number of digits pageutil.setpagenumsum (getPagenumSSS (parammap, tableName));} catch (exception e) {e.printstacktrace ();} akhirnya {jdbcutil.closeconn (conn);}}/ ** * Dapatkan atribut dalam tabel * @param entertal * @paru- @parunne * columnName) {class <?> cls = entity.getClass (); Nilai objek = null; // Dapatkan semua atribut anggota di bidang kelas [] bidang = cls.getDeclaredFields (); untuk (bidang bidang: bidang) {// Dapatkan nama atribut fieldName = field.getName (); // (fieldName.equalSignorecase (columname)) {// Dapatkan nama metode sesuai dengan aturan string methodName = "get"+fieldname.substring (0,1) .touppercase ()+fieldname.substring (1); coba {// Dapatkan objek metode menurut metode metode metode metode = cls.getmethod {// dapatkan metode metode metode metode metode = cls.getmethod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod (cls.getnod {// method.invoke(entity);} catch (Exception e) {e.printStackTrace();}break;}}return value;}/** * Save the method to get SQL * @param tableName * @param prykey * @param filedList * @return */private String getsavesql(String tableName, String prykey, List<String> filedList) {StringBuffer sql = stringBuffer baru (); sql.append ("masukkan ke") .append (tableName) .Append ("("); Daftar <String> ColumnList = getTableColumns (Tablename); untuk (String String: ColumnList) {if (string.equalsignorecase (prykey)) {sql.append (string) .append (","); fileedlist.add (string);}} if (sql.toString (). endswith (",")) {sql = new stringBuffer (sql.substring (0, sql.length ()-1); <fileDlist.size (); i ++) {sql.append ("?,");} if (sql.toString (). endswith (",")) {sql = stringBuffer (sql.substring (0, sql.length ()-1); /** * Dapatkan kolom tabel * @param tableName * @return * /daftar pribadi <string> getTableColumns (string tableName) {list <string> columnList = new arraylist <string> (); koneksi conn = null; databasemetadata metadata = null; hasil rs rs = null; conn = jdbc = jdbc = jdbc = jdbc = jdbc = jdbc. conn.getMetadata (); rs = metadata.getColumns (conn.getCatalog (), null, tableName.touppercase (), null); while (rs.next ()) {string clumnName = rs.getString ("column_name"); columnList.add (clumnName);}} catch (sqlexception e) {e.printstacktrace ();} akhirnya {jdbcutil.closeconn (conn);} return kolom {jdbcutil.closeconn (conn);}; } /** * Encapsulate query results* @param rs * @return * @throws Exception */@SuppressWarnings("unchecked")private List<E> getEntityList(ResultSet rs) throws Exception {List<E> list = new ArrayList<E>();Field[] fields = cls.getDeclaredFields();while(rs.next()){E e = (E) cls.newInstance (); untuk (bidang bidang: bidang) {coba {field.setAccessible (true); string columnName = field.getName (); string fieldType = field.getType (). GetsImplename (); if ("string" .equals (fieldType)) {field.set.set. if ("integer" .Equals (fieldType)) {field.set (e, rs.getint (columname));}} catch (pengecualian e1) {e1.printstacktrace ();}} list.add (e);} daftar kembali;}}}};Konten Konfigurasi Konfigurasi Konfigurasi MySQL
driver = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/dbsda10? karakterencoding = UTF-8 username = Password root = rootroot temfile = c: // gambar = c: // gambar
Konfigurasi File Membaca Kelas Configutil
Paket com.shude.util; import java.io.ioException; import java.util.properties;/** * Baca file konfigurasi * @author administrator * */kelas publik configutil {private static configutil configutil; string final statis pribadi defalt_file_path = "/config.properties"; nama string statis pribadi; properti pribadi pop; private configutil () {init (); } private void init () {pop = properti baru (); coba {if (name! = null) pop pop } catch (ioException e) {e.printstacktrace (); }} public static configutil newInstance (name string) {configutil.name = name; if (configutil == null) configutil = new configutil (); return configutil; } / ** * Dapatkan nilai di sebelah kanan dalam file konfigurasi * Kunci @param * @return * / public string getVal (tombol string) {return pop.getProperty (key); }}Kondisi sebelum ini adalah bahwa nama bidang dari database harus sesuai dan sama dengan nama di kelas entitas, dan ada nama tabel data terkait dan file konfigurasi yang terkait dengan nama kelas entitas. File konfigurasi adalah sebagai berikut:
taborm.properties
com.shude.entity.userInfo = user_info com.shude.entity.roleInfo = role_info com.shude.entity.fabricinfo = fabric_info com.shude.entity.productinfo = product_info com.shude.entity.mateinfo = mate_info_info com.shude.entity.mateinfo = Mate =oinfo.inSho.entity.entity.entity = mate = Mate = mate_info = com.shude.entity.
Artikel di atas JDBC mengimplementasikan metode dasar umum untuk menambah, menghapus, memodifikasi dan memeriksa adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.