Javaには、Hibernate、MyBatisなど、Javaにはデータ管理には多くのフレームワークがありますが、最初に学んだことはJDBCでした。 JDBCはまだとても良いと思います。データ操作をより深く理解することができます。今日は、再び書いた基本的なJDBCクラスを書きます!メモリを深めます! ! !
最初に、一般的な増分実装クラスBasedAoを投稿します
パッケージcom.shude.dao; import java.lang.refllect.field; import java.lang.reflect.method; import java.lang.lang.Rang.Rang.ParameterizedType; Import Java.Lang.Type; Import Java.sql.Connection; Import java.sql.databasemaTa.Connection; java.sql.preparedStatement; Import Java.sql.Resultset; Import Java.sql.sqlexception; Import Java.util.util.linkedhashmap; Import java.util.list; Import Java.util.map; Import Java.util.Map.Entil.Entil.Map.Util.Map.Util.Map.Util.Map.Map.Map.Map; com.shude.dao.im.ibadeao; Import com.shude.util.configutil; Import com.shude.util.jdbcutil; Import com.shude.util.pageutil;/** *一般的な追加、削除、修正、検索実装クラス * @author管理者 * * @param static configutil configutil;保護されたクラス<? type).getActualTyPearguments(); cls =(class <?>)型[0];}}/***対応するクラスのデータベースにテーブル名を取得します*/static {configutil = configutil.newinstance( "/taborm.properties");}/** {class <? GetSavesQl(TableName、Prykey、FileEdlist); // sqlflag = exclusivesql(sql、e、fileedlist);} catch(flag = false; e1.printstacktrace();} return flag;}/*** modifyinfo(e){e){> clsifieinfo(e)<?/*** e.getClass(); //テーブル名を取得します文字列タブン= configutil.getname(); //プライマリキー文字列prykey = getPrimkey(tableName); //データ列リスト<文字列> filedlist = new arraylist <string>(); getModifySql(TableName、Prykey、FileDlist); //プライマリキーをset filedlist.add(prykey); // sqlexcutesql(sql、e、filedlist);}/*** delete method*){/public void neame id){// get teable string = get teable configutil.getval(cls.getName()); //プライマリキー文字列prykey = getPrimkey(tableName); // sqlステートメント文字列sql = "update"+tablename+"set status = '1' where"+prykey+"=?"; connection conn = null; predtatementm = null conn.preparestatement(sql); pstm.setobject(1、id); pstm.execute();} catch(excepsed e){e.printstacktrace();}最後に{jdbcutil.closeconn(conn);}}}}/*** queryすべての方法* pageutil.getEntity(); //テーブル名を取得する文字列タブネーム= configutil.getVal(cls.getName()); // query条件Map <string、object> parammap = getParammap(e); // get sqlstring sql = get areysql(parammap、tablename); sql += "limit?、?、"; parammap.put( "pagesize"、(pageutil.getpagesize() - 1)* pageutil.getpagenum()); parammap.put( "pagenum"、pageutil.getpagenum(); // sqlexcutquery(sqlecutquery(sql、parammap);方法 */public e querybyid(object id){//テーブル名を取得する文字列タブネーム= configutil.getname()); null; preatedStatement pstm = null; resultet rs = null; e e = null; try {conn = jdbcutil.getconn(); pstm = conn.preparestatement(sql); pstm.setobject(1、id); rs = pstm.executequery(); ef <e> let <exentityList(rs); (例外ex){ex.printstacktrace();}最後に{jdbcutil.closeconn(conn);} return e;}/ ** * @param parammap * @return */ private integer get -pagenumss(Map <String> Parammap、String TabeName) parammap.remove( "Pagesize"); parammap.remove( "pagenum"); string sql = getquerysql(parammap、tablename); sql = "select(*)from("+sql+")metab"; connection conn = null; redtatementmentmentmentm = null; jdbcutil.getConn(); pstm = conn.preparestatement(sql); int i = 1; for(entr <string、object> entry:parammap.entryset()){object val = entry.getValue(); if(val instanceof java.lang.String){pstm.setString 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();}最後に{jdbcutil.closeconn(conn);} return pagenumss;}/** * @private string */private string */private string */** * getQuerySQL(Map <String、Object> Parammap、String TableName){stringbuffer sql = new StringBuffer(); sql.Append( "Select * from").append( "where 1 = 1 and status = '0'"); list <string> columnlist = getTableColumns(TableName); Entry <String> parammap.entryset()){string columnname = entry.getKey(); for(string colnname:columnlist){if(colnname.equalsignorecase(columname)){if(entry.getValue()instanceof java.lang.string){sql.append( "and" and "append(adpend)。 ;} else {sql.append( "and").append(columname).append( "=?");} break;}}}} return sql.tostring();} /** * @param e * @return * /private map <string> getParammap(e) linkedhashmap <string、object>(); field [] fields = e.getclass()。 val);}} catch(Exception e1){e1.printstacktrace();}} parammap;}/** * @param tablename */private string getprimkey(string tablename){connece conn = null; null; databasemetadata = null; resset rs null; jdbcutil.getConn(); metadata = conn.getMetadata(); rs = metadata.getPrimaryKeys(conn.getCatalog()、null、tablename.touppercase()); while(rs.next()){primkeyname = rs.getString( "column_name");}} catch(sqlextrace e){e.printstacktrace();}最後に{jdbcutil.closeconn(conn);} return primkeyname;}/** @return */private boolean exhautsql(string sql、e entity、list <string> filedlist){boolean flag = true; connection conn = null; preatedstatement pstm = null; try {conn = jdbcutil.getConn(); pstm = donn.preparestmentemen = getFieldValue(entity、columname); pstm.setobject(i、val); i ++;} pstm.execute();} catch(sqlexception e1){e1.printstacktrace(); fall = false;} @param prykey * @param filedlist * @return */private string getModifysql(string tablename、string prykey、list <string> filedlist){stringbuffer sql = new stringbuffer(); sql.Append( "update").append(tablename); (String columnName:columnList){if(!columnname.equalsignorecase(prykey)){filedlist.add(columnname); sql.append( "=?、");}} if(sql.tostring( ")。 StringBuffer(sql.Substring(0、SQL.Length()-1));} sql.Append( "where").append(prykey).append( "=?"); return sql.tostring();} /** * @param * @param baidap * @parmam baidap * @parmam baidap *を実行Excutquery(pageutil <e> pageutil、string sql、map <string、object> parammap、string tablename){connection conn = null; prededStatement pstm = null; resultet rs = null; try {conn = jdbcutil.getconn(); pstm = conn.pretatementementementemen parammap.entryset()){object val = entry.getvalue(); if(val instanceof java.lang.string){pstm.setstring(i、 "%"+val.tostring()+"%");} else(val instanceof java.lang.integer){pstm.setint(i integer.parseint(val.tostring());} i ++;} rs = pstm.executequery(); list <e> list = getEntityList(rs); //クエリ結果pageutil.setlist(list); // catapsulate総数pageutil.setpagenummap(getpagenumss) (例外e){e.printstacktrace();}最後に{jdbcutil.closeconn(conn);}}/** *テーブルで属性を取得 * @param columnname * @return */private object getfieldvalue(e entity、string columnname){class <クラスフィールド[] fields = cls.getDeclaredfields(); for(field:fields){//属性名String infieldname = field.getName(); //属性名は列名と同じかどうかif(fieldname.equalsignecase(columname)){// "get"+fieldname.substring(0,1).touppercase()+fieldname.substring(1); try {//メソッド名に従ってメソッドオブジェクトを取得します方法= cls.getmethod(methodname); //メソッドを実行し、返される値= method.invoke(エンティティ); value;}/** * sql * @param tablename * @param prykey * @param filedlist * @return */private string getsavesql(string tablename、string prykey、list <string> filedlist){stringbuffer sql = new Stringbuffer(); sql.append(in tint inting "inting" int "int" int "inted()new Stringbuffer(); ( "); list <string> columnList = getTableColumns(tableName); for(string string:columnList){if(!string.equalsignorecase(prykey)){sql.append("、 "); filedlist.add(string);}}} if(sql.tring(" " Stringbuffer(sql.substring(0、sql.length() - 1));} sql.append( ")value("); Stringbuffer(sql.substring(0、sql.length() - 1));} sql.append( ")"); return sql.tostring();} /** * get table * @return * /private list> gettablecolumns(String comnownist = columnlist = columnLumns) = null; databasemetadata metadata = null; resultset rs = null; conn = jdbcutil.getConn(); try {metadata = conn.getMetadata(); rs = metadata.getColumns(conn.getCatalog()、null、tablename.toupercase()、null); while(rs.next()){string clumnname = rs.getString( "column_name"); columnlist.add(clumnnaname);}} catch(sqlexStacktrace();}最後に{jdbcutil.closeconn(conn);} columlist; } /** *クエリの結果をカプセル化 * @param rs * @return * @throws例外 * / @suppresswarnings( "unchecked")プライベートリスト<e> getEntityList(resultet rs)throws exception {list <e> list = new arraylist <e>(); field [] cls.getdeclaredfields(nexts); (e)cls.newinstance(); for(field:fields){try {field.setaccessible(true); string columnname = field.getName(); string fieldtype = field.getType()。 if( "integer" .equals(fieldtype)){field.set(e、rs.getint(columname));}} catch(exception e1){e1.printstacktrace();}} list.add(e);} return list;}}}}}}MySQL関連の構成ファイルconfig.propertiesコンテンツ
driver = com.mysql.jdbc.driver url = jdbc:mysql:// localhost:3306/dbsda10?charaterencoding = utf-8 username = root password = rootroot temfile = c:// image = c://画像
Configurationファイルの読み取りクラスconfigutil
パッケージcom.shude.util; Import java.io.ioexception; import java.util.properties;/** * configuration file * @author administrator * */public class configutil {private static configutil configutil; private static final string defalt_file_path = "/config.properties";プライベート静的文字列名;プライベートプロパティポップ; private configutil(){init(); } private void init(){pop = new Properties(); try {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 = fabric_info com.shude.entity.productinfo = product_info com.shude.entity.mateinfo = mate_info com.shude.entiTiity
上記の記事JDBCは、追加、削除、変更、チェックのための一般的な基本的な方法を実装しています。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。