Il existe de nombreux cadres pour la gestion des données en Java, comme Hibernate, Mybatis, etc., mais ce que j'ai appris au début était JDBC. Je pense que JDBC est encore très bon. Cela me permet de comprendre les opérations des données plus profondément. Aujourd'hui, j'écrirai le cours de base JDBC que j'ai écrit à nouveau! Approfondissez la mémoire! ! !
Premier poste la classe de mise en œuvre incrémentielle commune basé sur Basedao
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.databasemata; import; java.sql.preparedStatement; import java.sql.resultSet; import java.sql.sqlexception; import java.util.arraylist; importer java.util.linkedhashmap; import java.util.list; import java.util.map; import java.util.map.entRy; import; com.shude.dao.im.ibasedao; import com.shude.util.configutil; import com.shude.util.jdbcutil; import com.shude.util.pageutil; / ** * ajout général, délétion, modification et classe de recherche Classe de mise en œuvre * @author administrateur * * @param <e> * / Classe publique basée sur la classe publique <e> {Configutil statique protégé Configutil; classe protégée <?> CLS; / ** * Obtenez le nom du package et le nom de la classe * / public-basationao () {class <?> clstemp = this.getClass (); type type = clstemp.getGenerricSuperclass (); if (type instanceof parameterType) {type [] types = (((paramètreType) Type) .getactualTypeArGuments (); CLS = (classe <?>) Types [0];}} / ** * Obtenez le nom du tableau dans la base de données de la classe correspondante * / statique {configUtil = configUtil.newinstance ("/ taborm.properties");} / ** * SAVE Méthode * / Public BooleaneInfo {Class <?> CLS = e.getClass (); // Obtenez le nom de table String TableName = ConfigUtil.getVal (cls.getName ()); // Obtenez la clé principale String Prykey = GetPrimkey (TableName); // Enregistrez la liste de colonnes de données <string> filedList = new ArrayList <string> (); // Obtenez la chaîne de déclaration sql sql = getavesql (tableName, prykey, fileedlist); // exécuter sqlflag = exclusivesql (sql, e, fileedlist);} catch (exception e1) {flag = false; e1.printstacktrace ();} return drapeau;} / ** * modifier la méthode * / public vide modifyinfo (e e) {Classic e.getClass (); // Obtenez le nom de table String TableName = configUtil.getVal (cls.getName ()); // Obtenez la clé principale String Prykey = getPrimkey (TableName); // Enregistrez la liste de colonnes de données <string> filedlist = new ArrayList <string> (); // Obtenez la déclaration SQL SQL SQL = GetModifysQl (Tablename, Prykey, Filedlist); La clé principale de l'ensemble filedList.add (prykey); // exécuter sqlexcutesql (sql, e, filedlist);} / ** * delete méthode * / public void deleteInfo (objet id) {// get the-name String TableName = configUtil.getVal (Cl.getName ()); // get the primor key string gm gsykey (getprimke La chaîne d'instruction SQL SQL = "Update" + TableName + "set status = '1' où" + prykey + "=?"; connexion conn = null; préparéStation pstm = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); pst.setoBject (1, 1, id); gens Map <string, object> parAmmap = getParammap (e); // get sqlstring sql = getQuerysql (parammap, tableName); SQL + = "LIMIT?,?"; Parammap.put ("PageSize", (PageUtil.getPageSize () - 1) * PageUtil.getPagenum ()); parammap.put ("Pagenum", Pageutil.getPagenum ()); // EXECUTER SQLEXCUTQUERY (Pageutil, Sql, paramap Méthode * / public e QueryById (ID d'objet) {// Obtenez le nom de table String TableName = configUtil.getVal (cls.getName ()); // Get the Priminal Key String Prykey = GetPrimkey (TableName); // Get SqlString Sql = "SELECT * FROM" + TableName + "Where 1 et" + Prykey + "=?" NULL; préparéStatement PSTM = null; resultSet rs = null; e e = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); pstm.setObject (1, id); rs = pstm.ExECUTEQUERY (); list <e> list = GetEntityList (rs); e =. (Exception Ex) {ex.printStackTrace ();} Enfin {jdbcutil.closeConn (Conn);} return e;} / ** * Obtenez le nombre total de chiffres * @param parammap * @param TableName * @return * / private Integer getPageNumss (map <string, objet> Parammap, String Tablename) { Parammap.Remove ("PageSize"); Parammap.Remove ("Pagenum"); String Sql = GetQuerySQL (Parammap, TableName); SQL = "Select Count (*) From (" + Sql + ") Temptab"; Connection Conn = Null; préparation PSTM = Null; ResultTset Rs = null; Integer Pagenums = 0; Jdbcutil.getConn (); pstm = conn.preparestatement (sql); int i = 1; pour (entrée <string, objet> entrée: paramap.entryset ()) {objet val = entry.getValue (); if (valoreof java.lang.string) {PSTM if (Val instanceof java.lang.integer) {pstm.sentInt (i, Integer.ParseInt (val.toString ()));} i ++;} rs = pstM.ExecuteQuery (); while (Rs.Next ()) {pagenumsss = Rs.GetInt (1);}} catch (exception e) {e.printStackTrace ();} enfin {jdbcutil.closeConn (Conn);} return pagenumssss;} / ** * get query sql * @param Parammap * @Param Tablename * @rerurn * / private String * Stringle * 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: chumberList) {if (colnname.equalsignorecase (chronmname)) {if (entry.getValue () instanceof java.lang.string) {sql.append ("et"). ? ");} else {sql.append (" et ") .append (chronmname) .append (" =? ");} break;}}} return sql.toString ();} / ** * obtenez des conditions de requête * @param e * @return * / private map <string, objet> getArammap (e e) {map <string, objet> parammp = new LinkedHashmap <String, objet> (); champ [] fields = e.getClass (). GetDeclaredFields (); for (Field Field: Fields) {try {field.setAccessble (true); objet Val = Field.get (e); if (val! = Null &&! "". Val);}} catch (exception e1) {e1.printStackTrace ();}} return parAmmap;} / ** * Obtenez la clé principale * @param tableName * @return * / private String getprimkey (String TableName) {Connex Jdbcutil.getConn (); metadata = conn.getMetadata (); rs = metadata.getprimarykeys (conn.getCatalog (), null, tableName.toupperase ()); tandis que (Rs.Next ()) {primKeyName = Rs.getString ("Column_name");}} Catch (Sqlexception e) {e.printStackTrace ();} enfin {jdbcutil.closeconn (Conn);} return primkeyname;} / ** * SAVE Méthode exécution sql * @Param sql * @param e * @Param listioned listion * @param sql * @param e *faram liscustion * sql * @Param sql * @Param e *faMed listion * sql * @Param sql * @return * / private boolean exhateSQL (String sql, e entité, list <string> filedlist) {boolean flag = true; connexion conn = null; préparestatement pstm = null; try {conn = jdbcutil.getConn (); pstm = Conn.preparestatement (sql); // attribuez it i = 1; pour (string columnname: Filedlince); getFieldValue (Entity, Columname); pstM.SetObject (i, Val); i ++;} pstM.Execute ();} catch (sqlexception e1) {e1.printstacktrace ();} retour;} * @param prykey * @param filedList * @return * / private String getModifySQL (String TableName, string prykey, list <string> filedList) {StringBuffer sql = new StringBuffer (); sql.APPEND ("Update") .APPEND (TableName) .Apnd ("set"); list <string> Columnlist = GetTableColon Columnname: ColumnList) {if (! ColumnName.EqualSIgnoreCase (Prykey)) {filedList.Add (Columnname); Sql.Apend (Columnname) .Apnd ("=?,");}} if (sql.tostring (). StringBuffer (sql.substring (0, sql.length () - 1));} sql.append ("où") .Apnd (prykey) .append ("=?"); Return sql.toString ();} / ** * exécuter tout sql * @param pageutil * @param sql * ExcutQuery (PageUtil <e> PageUtil, String Sql, Map <String, Object> Parammap, String TableName) {Connexion Conn = Null; préparéStatement PSTM = NULL; ResultSet rs = NULL; Try {Conn = JDBCutil.getConn (); Pstm = Conn.Preparestatement (SQL); Parammap.EntrySet ()) {objet val = entry.getValue (); if (val instanceof java.lang.string) {pstm.setstring (i, "%" + val.tostring () + "%");} else if (val d'instance de java.lang.integer) {pstm.sent (i, val, Integer.ParseInt (val.toString ()));} i ++;} rs = pstM.ExecuteQuery (); list <e> list = getEntityList (rs); // encapsulat Query Resultations Pageutil.setList (list); // encapsule total Nombre de Digits Pageutil.SetPageNumsum (GetpagenssssSs (Pareamny); e) {e.printStackTrace ();} Enfin {jdbcutil.closeConn (Conn);}} / ** * Get Attributs in the Table attributs dans le champ de classe [] fields = cls.getDeclaredFields (); for (Field Field: Fields) {// Obtenez le nom d'attribut String FieldName = field.getName (); // Term Si le nom d'attribut est le même que le nom de la colonne if (FieldName.EqualSIgnoreCase (colonne "get" + fieldname.substring (0,1) .toupperase () + fieldname.substring (1); try {// obtenez l'objet de la méthode en fonction de la méthode méthode méthode = cls.getMethod (méthodyname); Valeur;} / ** * Enregistrez la méthode pour obtenir SQL * @Param TableName * @Param Prykey * @param FiledList * @return * / private String Getavesql (String TableName, String Prykey, List <string> FiledList) {StringBuffer Sql = New StringBuffer (). ("); List <string> collumnList = getTableColumns (TableName); for (String String: ColumnList) {if (! String.EqualSIgnoreCase (Prykey)) {sql.append (string) .append (", "); filedList.add (string);}} if (sql.Tostring (). StringBuffer (sql.SubString (0, sql.length () - 1));} sql.append (") value ("); for (int i = 0; i <filedList.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 = Columnlist => ColumnList <);); String TableName) {List <String> Columnlist = Columnlist => ColumnList => Connection <); = null; databaseMetAdata Metadata = null; resultSet rs = null; conn = jdbcutil.getConn (); try {metadata = conn.getMetadata (); rs = metadata.getcolumns (conn.getcatalog (), null, tablename.toupperase (), null); while (Rs.Next ()) {String clUnMname = Rs.getString ("Column_name"); ColumnList.Add (Clumnname);}} Catch (SQLEXception E) {E.PrintStackTrace ();} Enfin {jdbcutil.closeConC (Conn);} retour ColumnList; } / ** * résumer les résultats de la requête * @param rs * @return * @throws exception * / @ suppresswarnings ("Unchecked") Liste privée <e> getEntityList (resultSet rs) lance l'exception {list <e> list = new ArrayList <e> (); field [] fields = cls.getDeclatedFields (); (E) cls.newinstance (); for (champ champ: fields) {try {champ if ("Integer" .Equals (fieldType)) {field.set (e, rs.getInt (chronomédige));}} catch (exception e1) {e1.printstacktrace ();}} list.add (e);} return list;}}}Fichier de configuration lié à MySQL Config.properties Contenu du contenu
driver = com.mysql.jdbc.Driver url = jdbc: mysql: // localhost: 3306 / dbsda10? CaractorEncoding = utf-8 username = root mot de passe = rootroot temfile = c: // image = c: // images
Configuration Fichier de lecture Classe Configutil
package com.shude.util; importer java.io.ioexception; import java.util.properties; / ** * Lire le fichier de configuration * @author administrateur * * / classe publique ConfigUtil {private static configUtil configUtil; chaîne finale statique privée Defalt_file_path = "/ config.properties"; nom de chaîne statique privé; propriétés privées pop; configUtil privé () {init (); } private void init () {pop = new Properties (); essayez {if (name! = null) pop.load (configUtil.class.getResourceSstream (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 (); return configUtil; } / ** * Obtenez la valeur à droite dans le fichier de configuration * @param key * @return * / public String getVal (string key) {return pop.getProperty (key); }}La condition précédente est que le nom de champ de la base de données doit correspondre et être le même que le nom dans la classe d'entité, et il existe des noms de table de données et des fichiers de configuration liés au nom de la classe d'entité. Les fichiers de configuration sont les suivants:
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.entity.ProgramInfo=program_info
L'article ci-dessus JDBC implémente les méthodes de base générales pour ajouter, supprimer, modifier et vérifier est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.