Existem muitas estruturas para o gerenciamento de dados em Java, como Hibernate, Mybatis etc., mas o que aprendi no início foi o JDBC. Eu acho que o JDBC ainda é muito bom. Isso me permite entender as operações de dados mais profundamente. Hoje vou escrever a classe JDBC básica que escrevi novamente! Aprofundar a memória! ! !
Primeiro poste a classe de implementação incremental comum baseada
pacote com.shude.dao; importar java.lang.reflect.field; importar java.lang.reflect.method; importar java.lang.reflect.parameterizedtype; importação java.lang.reflect.type; import.sql.connection; Java.SQL.PreparedStatement; importar java.sql.resultset; importar java.sql.sqLexception; importar java.util.arraylist; importar java.util.LinkedHashmap; import java.util.list; import.util.MapMap.MapMap; com.shude.dao.im.iBasedAo; importar com.shude.util.configuil; importar com.shude.util.jdbcutil; importar com.shude.util.pageUtil;/** * adição geral, exclusão, modificação e classe de implementação * @author Administrador * * @param <e> * * Configuil estático configuil; classe protegida <?> cls;/*** Obtenha o nome do pacote e o nome da classe*/public baseado () {class <?> clstemp = this.getClass (); tipo type = clstemp.getGenericSuperclass (); if (digite a instância do parametriedtype) {] TIPO) .getActualTyPearguments (); cls = (classe <?>) tipos [0];}}/*** Obtenha o nome da tabela no banco de dados da classe correspondente*/static {configutil = confgutil.NewInstance ("/taborm.ProPertiesF (ef)/slaol; {Classe <?> Cls = e.getclass (); // obtenha o nome da tabela string tablename = configutil.getVal (cls.getName ()); // obtenha a chave de chave primária prykey = getPrimkey (tablename); // gravar a lista de colunas de dados <String> fildList = new Arraylist <string> (); // getSaveSql (tableName, prykey, list fileedList); // Execute sqlflag = exclusivesql (sql, e, fileedlist);} catch (exceção e1) {sinalizador = false; e1.printstacktrace ();} retornar sinalizador;}/***}? e.getclass (); // obtenha o nome da tabela string tableName = configutil.getVal (cls.getName ()); // Obtenha a chave de chave primária prykey = getPrimKey (tableName); // Registre a lista de dados da coluna de dados <String> filedList = new ArrayList <string> (); // obtenha a instrução sql string sql sql sql sql sql sql sql sql stringlist = new ArrayList <) (); // obtenha a instrução sql string string = getModifysql (tablename, prykey, arquivada); // Adicione a chave primária ao conjunto FiledList.add (prykey); // Execute sqlexcutesql (sql, e, filedlist);}/*** delete Método*/norma public vazio de deleteinfo (objeto) {Objed);}/** *** Configuil.getVal (cls.getName ()); // Obtenha a chave de chave primária prykey = getPrimKey (nome do tablename); // Obtenha a instrução SQL String sql = "update"+tableName+"setTSTatement PSTM = NURL; Conn.Preparestatement (SQL); Pstm.SetObject (1, ID); Pstm.Execute ();} Catch (Exceção e) {e.printStacktrace ();} finalmente {jdbcutil.closeconn (conn);}}/*** Query todos os métodos*/public Voidsinginf. PageUtil.getEntity (); // Obtenha o nome da tabela String tableName = configutil.getVal (cls.getName ()); // Obtenha o mapa de condições da consulta <string, objeto> paramMap = getParamMap (e); // obtém sqlstring sql = getQuerySql (paramMap, tableName); sql += "limite?,?"; parammap.put ("Pagesize", (PageUtil.getPagesize () - 1)* PageUtil.getPagenum ()); parammap.put ("pagenum", PageUtil.getPagenum ()); // Executar sqLEXUCTQUERIL; Método */public E QuerybyId (objeto ID) {// Obtenha o nome da tabela String tableName = configutil.getVal (cls.getName ()); // obtenha a chave de chave primária prykey = getPrimKey (tableName); // obtém sqlstring sql = "select * de"+tablename+"ous 1 = 1 e" null; preparado PSTMEN PSTM = NULL; ResultSet rs = null; e E = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); pstm.setObject (1, id); rs = pStM.Execute (list); listen; (Exceção ex) {Ex.PrintStackTrace ();} finalmente {jdbcutil.closeconn (conn);} return e;}/ ** * Obtenha o número total de dígitos * @param parammap * @param tableName * @return */ private integleGenumss (map <string, object> paramp> paramp> paramp> paramp> paramap> paramp, string, string, string (string) (string) @param paramp * @param tableName * @return */ private integleGenumss (map <string, objeto> paramp> parammap.remove ("Pagesize"); parammap.remove ("pagenum"); string sql = getQuerySQL (parammap, tablename); sql = "selecione count (*) de ("+sql+") textab"; conexão = nulo; then; Jdbcutil.getConn (); pstm = conn.Preparestatement (sql); int i = 1; para (entrada <string, objeto> entrada: parammap.entrySet ()) {objeto val = entrada.getValue (); if (valeof java.lang.string) {pStM.SetSting (); if (Val instanceof java.lang.integer) {pstm.SetInt (i, inteiro.parseint (val.toString ()));} i ++;} rs = pstm.executeQuery (); while (rs.Next ()) {Pagenumsss = rs.getInt (1);}} Catch (Exceção e) {e.printStackTrace ();} finalmente {jdbcutil.closeconn (Conn);} retornar pagenumss;}/** * Obtenha sql * @parammap * paramMAp * @PARMAMAMAMSSSSSSs;} ** ** * getQuerySQL (map <string, objeto> paraMMAP, string tableName) {stringbuffer sql = new stringBuffer (); sql.append ("selecione * de") .Append (tableName) .append ("onde 1 = 1 e status = '0'); list <; parammap.entryset ()) {string columnName = entradas.getKey (); para (string colnName: colunlList) {if (colnname.equalsignorecase (coluname)) {if (ingle.getValue () instância do java.lang.string) {sql.ppend ("e". ? ");} else {sql.append (" e ") .append (coluname) .append (" =? ");} break;}}} retorna sql.toString ();} /** * Obtenha condições de consulta * @param e * @return * /private map <tring, object> getPARMAP (e) @param e * @return * /private map <tring, object> getPARMAP (e) @param e * @return * /privado <strin Linkedhashmap <string, object> (); field [] campos = e.getclass (). GetDecLaredFields (); para (campo de campo: campos) {try {field.setAccessible (true); objeto val.ToString.get (e); if (val! val);}} catch (Exceção e1) {e1.printStackTrace ();}} retorna parammap;}/** * Obtenha a chave primária * @param tableName * @return */private string getPrimkey (string tableName) {conexão connecnet = null; databaseMetadATATATEMKET = NULL; Jdbcutil.getConn (); metadata = conn.getMetadata (); rs = metadados.getPrimaryKeys (Conn.getCatalog (), null, tableName.TOUPCASE ()); while (rs.Next ()) {primKeyName = rs.getString ("column_name");}} catch (sqLexception e) {e.printStackTrace ();} finalmente {jdbcutil.closeconn (conn);} retornar @return */private booleano exaustaSQL (string sql, entidade e, list <string> filedList) {bandeira booleana = true; conexão conn = null; preparadostatement pstm = null; try {conn = jdbcutil.getConn (); pstm = conn.preparestatement (sql); val = getfieldValue (entidade, coluna); pstm.setObject (i, val); i ++;} pstm.execute ();} catch (sqLexception e1) {e1.printStackTrace (); flag = flag = false;} finalmente {jdbcutil.closEconn (conn); tableName * @param prykey * @param filedList * @return */private string getModifysql (string tableName, string prykey, list <string> filedList) {stringbuffer sql = new stringBuffer (); sql.append ("atualização") .Append (tableName). gettableColumns (tableName); para (string columnName: colunlList) {if (! columnName.equalsignorecase (prykey)) {filedList.add (columnname); sql.append (columnname) .papnd ("=?,);); = new StringBuffer (sql.substring (0, sql.length ()-1));} sql.append ("where") .append (prykey) .append ("=?"); retorna sql.toString ();} /** * EXTETLET SQL * @PARTULTILTILTIL * Void ExcutQuery (PageUtil <E> PageUtil, String sql, map <string, objeto> parammap, string tablename) {conexão conn = null; preparado; parammap.entrySet ()) {objeto val = entradas.getValue (); if (Val Instância de java.lang.string) {pstm.SetString (i, "%"+val.tostring ()+"%");} else (valtateof java.lang.integer) Integer.ParseInt (val.ToString ()));} i ++;} rs = pstm.executeQuery (); list <e> list = getentityList (rs); // encapsulate os resultados de consulta PageUtil.setList (list); // encapsulados do número de dígitos PageUtil.SetPagenumsummumsummumsumsumsumsumsumes (listas); (Exceção e) {E.PrintStackTrace ();} finalmente {jdbcutil.closeconn (conn);}}/** * Obtenha atributos na tabela * @param entidade * @param columnName * @return */objeto privado getFieldValue (entidade e string. atributos no campo de classe [] campos = cls.getDecLaredFields (); para (campo de campo: campos) {// Obtenha o nome do atributo string fieldname = field.getName (); termo se o nome do atributo é o mesmo que o nome da coluna if (fieldname.EqualSoCorase (columname)) { "get"+fieldname.substring (0,1) .toupPercase ()+fieldname.substring (1); tente {// obtenha o objeto do método de acordo com o método do método do método Método = cls.getMethod (MethodName); // Execute o método e obtenha o valor de retorno = Method.inVoke (Entidade); {e.printStackTrace ();} break;}} retornar valor;}/** * Salvar o método para obter sql * @param tablename * @param prykey * @param filedList * @return */private string getSaveSql (string tablename, string PRYKEY, list <tring> fildList) {string getSql (string tablename, string PRYKEY, list <tring> fildList) { StringBuffer (); sql.append ("inserir em") .append (tableName) .append ("("); list <string> colunlList = gettableColumns (tableName); para (string string: colunlList) {if (! String.equalSignorecase (! {sql.append (string) .append (","); filedList.add (string);}} if (sql.toString (). endswith (",")) {sql = new stringBuffer (sql.substring (0, sql.Length ()-1); <FiledList.size (); /** * Obtenha coluna da tabela * @param tableName * @return * /private List <String> getTableColumns (String tableName) {list <string> colunlList = new ArrayList <string> (); conexão Connecn = null; Databasemetadata Metadata = null; ResultSetSet Rs = Null; Conn.getMetadata (); rs = metadados.getColumns (Conn.getCatalog (), null, tableName.TOUPPERCASE (), NULL); while (rs.Next ()) {string clumnName = rs.getString ("colun_name"); columnList.add (clumnname);}} catch (sqLexception e) {e.printStacktrace ();} finalmente {jdbcutil.closeconn ();}} } /** * Resultados da consulta encapsulada * @param rs * @return * @Throws Exception * / @represswarnings ("desmarcados") Lista privada <E> getentityList (ResultSet rs) lança exceção {list <e> list = newRayList <e> (); campo; (E) cls.newInstance (); para (campo de campo: campos) {try {field.setAccessible (true); string columnName = field.getName (); string fieldType = field.gettype (). if ("Inteiro" .Equals (FieldType)) {field.set (e, rs.getInt (coluname));}} Catch (Exceção E1) {e1.printStacktrace ();}} list.add (e);} Lista de retorno;}}}}}}}}}}}}}}}}}}}Conteúdo do arquivo de configuração relacionado ao MySQL Config.Properties
driver = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/dbsda10? caracterencoding = utf-8 nome de usuário = senha root = rootroot timfile = c: // imagem = c: // imagens
Classe de leitura de arquivo de configuração Configuil
pacote com.shude.util; importar java.io.ioException; importar java.util.properties;/** * Leia o arquivo de configuração * @author administrador * */public class configutil {private static configutil configuil; String final estática privada defalt_file_path = "/config.properties"; nome de string estática privada; Propriedades privadas pop; private configuil () {init (); } private void init () {pop = new Properties (); tente {if (nome! pop.load (configutil.class.getResourceasStream (DEFLT_FILE_PATH)); } catch (ioexception e) {e.printStackTrace (); }} public static configutil newInstance (nome da string) {configutil.name = name; if (configutil == null) configutil = new configutil (); retornar configuil; } / ** * Obtenha o valor à direita no arquivo de configuração * @param key * @return * / public String getVal (chave de string) {return pop.getProperty (key); }}A condição antes disso é que o nome do campo do banco de dados deve corresponder e ser o mesmo que o nome na classe Entidade, e existem nomes de tabela de dados relacionados e arquivos de configuração relacionados ao nome da classe de entidade. Os arquivos de configuração são os seguintes:
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.entity.info =
O artigo acima JDBC implementa métodos básicos gerais para adicionar, excluir, modificar e verificar é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.