В Java есть много структур для управления данными, таких как Hibernate, Mybatis и т. Д., Но то, что я узнал в начале, было JDBC. Я думаю, что JDBC все еще очень хорош. Это позволяет мне более глубоко понимать операции данных. Сегодня я напишу основной класс JDBC, который я написал снова! Углушить память! ! !
Сначала публикуйте общий класс инкрементной реализации на основе
package com.shude.DAO;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.preparedStatement; import java.sql.resultset; импорт java.sql.sqlexception; import java.util.arraylist; импорт java.util.linkedhashmap; import.matil.list; import java.ut.map; import.util.map. com.shude.dao.im.ibasedao; import com.shude.util.configutil; import com.shude.util.jdbcutil; import com.shude.util.pageutil;/** * Общее дополнение, на основе удаления, модификации и реализации static configutil configutil; защищенный класс <?> cls;/*** Получить имя пакета и имя класса*/public basedao () {class <?> clStemp = this.getClass (); type = clStemp.getGenericSuperClass (); if instanceOf parametizePe) {type [] tipes = ((параметрический) тип). (Class <?>) Типы [0];}}/*** Получить имя таблицы в базе данных соответствующего класса*/static {configutil = configutil.newinstance ("/taborm.properties");}/*** Сохранить*/public boolean saveinfo (e e) {boolean flag = true; trus {trame {? name String tableName = configUtil.getVal (cls.getName ()); // Получить строку первичного ключа prykey = getPrimkey (tableName); // Записать список столбцов данных <String> filedList = new ArrayList <string> (); // Получить SQL Strate String SQL = getaVesql (tableName, prykey, fileedList); 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 name name strable = configut. Строка первичного ключа prykey = getPrimkey (tableName); // Записать список столбцов данных <String> filledList = new ArrayList <String> (); // Получить строку оператора SQL SQL = getModifySQL (TableName, Prykey, FealedList); // Добавить первичный ключ к набору FILEDLIST.ADD (PRYKEY); SQLEXCUTESQL (SQL, E, FELEDLIST);}/*** MEDETE*/public void deleteInfo (ID объекта) {// Получить имя таблицы string tableName = configutil.getval (cls.getname ()); // Получить основной ключевой строку prykey = getPrimkey (TableName); // get SquMeme string string = "upeDENAME); status = '1' где "+prykey+" =? "; Connection conn = null; nuctStatement pstm = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); pstm.setobject (1, id); pstm.execut {Jdbcutil.closeconn (conn);}}/*** Запрос всех методов*/public void QueryInfo (pageUtil <e> pageutil) {e e = pageutil.getentity (); // Получить название таблицы string tableMame = configutil.getVal (cls.getName ()); // get Query Secend string, string string> parammam = parammam = parammam = parammam = parammam = string> parammam string> parammam = parammam string> parammam = parammam = string. getParammap (e); // получить sqlString sql = getQuerySQL (парамма, табличка); SQL += "Limit?,?"; Parammap.Put ("pageSize", (pageutil.getPagesize () - 1)* pageutil.getPagenum ()); parammap.put ("pagenum", pageutil.getpagenum ()); // Execute sqlexcuter Метод */public e QueryById (ID объекта) {// Получить имя таблицы string tableName = configUtil.getVal (cls.getName ()); // Получить основную строку ключа prykey = getPrimkey (TableName); // Получить sqlString sql = "select * from"+tablememe+", где 1 = 1 и"+prykey+"=? null; PreditStatement pStm = null; ResultSet rs = null; e e = null; try {conn = jdbcutil.getConn (); pstm = conn.prepareStatement (sql); pstm.setbject (1, id); rs = pstm.executequery (); listm. list = getEntity (rs = pstm.executequery ();); (Exception Ex) {ex.printStackTrace ();} наконец {jdbcutil.closeconn (conn);} return e;}/ ** * Получить общее количество цифр * @param parammap * @param tablemap * @return */ private integer getpagenss (map <string> parmmap, strance plabenam parammap.remove ("pagesize"); parammap.remove ("pagenum"); string sql = getquerysql (parammap, tablename); sql = "select count (*) из ("+sql+") temptab"; соединение = null; подготовленный pstm = null; null; null; null null; null; = Jdbcutil.getConn (); pstm = conn.prepareStatement (sql); int i = 1; for (string <string, object> intpirt: parammap.entryset ()) {Object val = intry.getValue (); if (val Encasonof java.lang.string) {pstm. "%"+val.toString ()+"%");} else if (val ancessionof 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 ();} наконец {jdbcutil.closeconn (conn);} возврат pagenumss;}/** get query sql * @paramp * @param * @@param * @param * @param * @@param * @@param * @@param * @@param * @@param. 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 (); for (string colnname: colutslist) {if (colnname.equalsignorecase (coluname)) {if (entry.getValue () exanceOf java.lang.String) {sql.Append ("и"). ? LinkedHashmap <string, object> (); field [] fields = e.getClass (). GetDeclaredFields (); for (Field Field: fields) {try {field.setAccessible (true); Object val = field.get (e); if (val! = Null &&! ». val);}} catch (Exception e1) {e1.printstacktrace ();}} возвращается параммпа;}/** * Получить первичный ключ * @param tablememe * @return */private getPrimkey (String TableMeame) {connect Connect = null; databasemetaData metadata = null; null null; null; null; null; null; Jdbcutil.getConn (); metAdata = conn.getMetAdata (); rs = metAdata.getPrimaryKeys (conn.getCatalog (), null, tablemaname.touppercase ()); while (rs.next ()) {primkeyname = rs.getString ("colub_name");}} catch (sqlexception e) {e.printstacktrace ();} наконец {jdbcutil.closeconn (conn);} return primkeyname;}/** save execution sql * @param sql * @param @param @param @param @param @param @parum @param @par */Private Boolean TrinkSQL (String SQL, E Entity, List <string> FiledList) {Boolean Flag = True; Connection conn = null; PreditStatement pStm = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestate (sql); // назначить int i = 1; for (string strune -allive: valed striled); GetFieldValue (Entity, ColunMeMe); PSTM.SetObject (i, val); i ++;} pstm.execute ();} catch (sqlexception e1) {e1.printstacktrace (); flag = false;} наконец {jdbcutil.closeconn (conn);} return flag;}/** ** ** ** ** ** ** ** ** ** @param prykey * @param felledlist * @return */private string getmodifysql (String TableName, String Prykey, List <string> FelledList) {StringBuffer SQL = new StringBuffer (); SQL.Append ("update") .Append (tableName) .Append ("set"); ColumnName: columnList) {if (! columnName.equalsIgnoreCase (prykey)) {felledlist.add (columnname); sql.append (columnname) .append ("=?,");}} if (sql.tostring (). StringBuffer (sql.substring (0, sql.length ()-1));} sql.append ("где") .append (prykey) .append ("=?"); Return sql.tostring ();} /** * Execute All Sql * @param PageTil * @param sqlame * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param * @param. 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 ()) {object val = intrint.getValue (); if (val ancomeof java.lang.string) {pstm.setstring (i, "%"+val.toString ()+"%");} else if (val ancessionof java.lang.integer) {pstm.setm. Integer.parseint (val.toString ()));} i ++;} rs = pstm.executequery (); list <e> list = getEntitylist (rs); // encapsulation Query Results Pageutil.setlist (list); // encaplulate tumber pageutil.setpagenumsum (getPagenSssssssssssssssssssssssssssmamam; (Exception e) {e.printstacktrace ();} наконец {jdbcutil.closeconn (conn);}}/** * Получить атрибуты в таблице * @param entity * @param columnname * @return */private getfieldvalue (e entity, string column -name) {class <?> Cls = ortity.getclass; Атрибуты в поле класса [] fields = cls.getdeclaredfields (); for (Полевое поле: Fields) {// Получить имя атрибута string keldname = field.getName (); // термин, является ли имя атрибут одинаково, что и имя столбца if (fieldname.equalsignorecase (columname)) {// Получить имя метода в соответствии с методом. "Get"+fieldName.substring (0,1) .touppercase ()+fieldname.substring (1); try {// Получить объект метода в соответствии с методом имени метода = cls.getmethod (метод имен); // выполнить метод и получить возвращаемое значение = метод. invoke (entith); value;}/** * Сохранить метод, чтобы получить SQL * @param TableName * @param prykey * @param felledlist * @return */private string getaVesql (строка TableName, String Prykey, List <string> filedList) {stringBuffer sql = new StringBuffer (); Sql.Append ("insertist). ("); List <string> colutslist = getTableColumns (tableName); for (String String: collinlist) {if (! String.equalsignoreCase (prykey)) {sql.append (string) .append (", "); felledlist.add (string);}} if (sql.tostring (). StringBuffer (SQL.SubString (0, SQL.Length ()-1));} SQL.Append (") value ("); for (int i = 0; i <felledlist.size (); i ++) {sql.append ("?,");} If (sql.tostring (). StringBuffer(sql.substring(0,sql.length()-1));}sql.append(")");return sql.toString();} /** * Get table column* @param tableName * @return */private List<String> getTableColumns(String tableName) {List<String> columnList = new ArrayList<String>();Connection conn = null; databasemetadata metadata = null; resultset rs = null; conn = jdbcutil.getconn (); try {metadata = conn.getmetadata (); rs = metadata.getColumns (conn.getCatalog (), null, tablePercase.touppercase (), null); while (rs.next ()) {string clumnname = rs.getString ("colun_name"); columnlist.add (clumnname);}} catch (sqlexception e) {e.printstacktrace ();} наконец {jdbcutil.closeconn (conn);} return columnlist; } /** * Инкапсулируйте результаты запроса * @param rs * @return * @throhs exception * / @suppresswarnings ("unchecked") частный список <e> getEntitylist (resultset rs) throws Exception {list <e> list = new ArrayList <e> (); field exteclds ext (); (E) cls.newinstance (); for (Поле Поля: Fields) {try {field.setAccessible (true); String columnName = field.getName (); String fieldtype = field.getType (). GetSiMplename (); if (". if ("integer" .equals (fieldtype)) {field.set (e, rs.getint (columname));}} catch (exception e1) {e1.printstacktrace ();}} list.add (e);} return list;}}}MySQL, связанный с конфигурацией конфигурации.
Driver = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/dbsda10? Характерподинг = UTF-8 username = root passwor
Конфигурация чтения класса Configutil
пакет com.shude.util; import java.io.ioexception; import java.util.properties;/** * Читать файл конфигурации * @author Administrator * */public configutil {private static configutil configutil; частная статическая конечная строка defalt_file_path = "/config.properties"; частная статическая строка имени; частная недвижимость поп; private configutil () {init (); } private void init () {pop = new Properties (); попробуйте {if (name! = null) pop.load (configutil.class.getResourceasStream (name)); pop.load (configutil.class.getResourceasStream (defalt_file_path)); } catch (ioException e) {e.printstackTrace (); }} public static configutil newInstance (string name) {configUtil.name = name; if (configutil == null) configutil = new configutil (); вернуть configutil; } / ** * Получите значение справа в файле конфигурации * @param key * @return * / public String getVal (String Key) {return pop.getProperty (key); }}Условие перед этим заключается в том, что имя поля базы данных должно соответствовать и быть таким же, как имен в классе объекта, и существуют связанные имена таблиц данных и файлы конфигурации, связанные с именем класса объекта. Файлы конфигурации следующие:
taborm.properties
com.shude.entity.userinfo = user_info com.shude.entity.roleinfo = role_info com.shude.entity.fabricinfo = fabrice_info com.shude.entity.productinfo = product_info com.shude.entity.mateinfo = mate_info com.shude.
Приведенная выше статья JDBC реализует общие основные методы для добавления, удаления, изменения и проверки - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.