Hay muchos marcos para la gestión de datos en Java, como Hibernate, MyBatis, etc., pero lo que aprendí al principio fue JDBC. Creo que JDBC sigue siendo muy bueno. Me permite comprender las operaciones de datos más profundamente. ¡Hoy escribiré la clase básica de JDBC que escribí nuevamente! ¡Profundiza el recuerdo! ! !
Primero publicar la clase de implementación incremental común a base de
paquete 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.databasetadata; importar; importación; java.sql.preparedStatement; import java.sql.ResultSet; import java.sql.sqlexception; import java.util.arrayList; import 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;/** * General addention, deleción, modificación e implementación de búsqueda de clase * @author administrador * * @param <e> */public class BasedAo <e> IMPLIMENTES static configUtil configUtil; proteged class <?> cls;/*** Obtener el nombre del paquete y el nombre de clase*/public baseAo () {class <?> clemstemp = this.getClass (); type = clemstemp.getGenericsuperClass (); if (type de parameterizedType) {type [] tipos = ((parameterizedType). (Clase <?>) Tipos [0];}}/*** Obtenga el nombre de la tabla en la base de datos de la clase correspondiente*/static {configUtil = configUtil.newinstance ("/taborm.properties");}/*** guardar método*/public saveInfo (e e) name String TableName = configUtil.getVal (cls.getName ()); // Obtener la clave principal de la clave prykey = getPrimkey (tableName); // Registre la lista de la columna de datos <String> FiledList = New ArrayList <String> (); // Obtenga la instrucción SQL String sql = getSavesql (Tablename, pryeList); // // ejecutute sqlflAg = exclusiveQl (sql, e, fileedList);} catch (excepción e1) {flag = false; e1.printstackTrace ();} flager de return;}/*** Modificar método*/public void modifyinfo (e e) {class <?> cls = e.getClass (); // Obtenga el nombre de la tabla Cadena TableName = configUtil.getVal (cls.getName ()); // Obtener la cadena de clave principal prykey = getPrimkey (tableName); // Registre la lista de columna de datos <String> FiledList = New ArrayList <String> (); // Obtenga la declaración SQL SQL = GetModifySql (Tablename, PryKey, FiledList); // fileDList.Add (prykey); // ejecutar sqlexCutesql (sql, e, filedList);}/*** Eliminar el método*/public void deleteinfo (id id) {// Obtener el nombre de tabla String TableName = configUtil.getVal (Cls.getName ()); // Obtenga el string principal de la tabla = getPrime GetPrime (TableName (TableNeMe); Declaración de cadena sql = "update"+tableName+"set status = '1' where"+prykey+"=?"; conexión conn = null; prepareStatement pstm = null; try {conn = jdbcutil.getConn (); pstm = conn.prepareStatement (sql); pstm.setObject (1, id); pSTM.Execute ();} (excepción); {E.PrintStackTrace ();} Finalmente {jdbcutil.CloseConn (conn);}}/*** Consulta Todos los métodos*/public void QueryInfo (PageUtil <E> PageUtil) {e e = PageUtil.getEntity (); // Obtener el nombre de la tabla Tablename = Configutil.getval (CLS.getName (); 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 ()); // ejecutute sqlexCutquery (pageutil, sql, parammap, tabla);} Método */public E QueryByid (ID de objeto) {// Obtenga el nombre de la tabla String TableName = configUtil.getVal (cls.getName ()); // Obtenga la clave de la clave principal PryKey = getPrimkey (tableName); // get sqlString sql = "select * de"+nombre de tablename+"where 1 = 1 y"+prykey+"=?"; // ejecutúe null; prepareStatement 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); (Excepción ex) {ex.printstackTrace ();} finalmente {jdbcutil.closeConn (conn);} return e;}/ ** * Obtenga el número total de dígitos * @param parammap * @param tableName * @return */ private entero getPageNumss (map <string> parammap, string tableame) { parammap.remove ("pageSize"); parammap.remove ("pagenum"); string sql = getQuerySql (parammap, tableName); sql = "select Count (*) de ("+sql+") TemptAB"; Connection conn = null; preparado PSTM = null; resultSet ssset; = JdbcUtil.getConn();pstm = conn.prepareStatement(sql);int i = 1;for (Entry<String,Object> entry : paramMap.entrySet()) {Object val = entry.getValue();if(val instanceof java.lang.String){pstm.setString(i, "%"+val.ToString ()+"%");} else if (val instancia de java.lang.integer) {pstm.setInt (i, integer.parseInt (val.ToString ());} i ++;} rs = pstm.Executequery (); while (rs.Next ()) {PageNumSSSS = rs.getInt (1);}} Catch (Exception e) {E.PrintStackTRace ();} finalmente {jdbcutil.CloseConn (conn); 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: columnList) {if (colnname.equalSignorEcase (columname)) {if (entry.getValue () instancia de java.lang.string) {sql.append ("y") .append (columname) .append ("como" " ? ");} else {sql.append (" y ") .Append (columname) .Append (" =? ");} break;}}} return sql.ToString ();} /** * Obtener condiciones de consulta * @param e * @return * /private map <string, objeto> getParammap (e e) {map <string, object de parammap = objeto de parammape LinkedHashMap <String, Object> (); Field [] Fields = e.getClass (). val);}} catch (Exception e1) {e1.printstackTrace ();}} return parammap;}/** * Obtenga la clave principal * @param tableName * @return */private string getPrimkey (string string tableName) {Connection conn = null; dataBasEmetAdata metadata = null; resultetSet; Jdbcutil.getConn (); metadata = conn.getMetadata (); rs = metadata.getPrimaryKeys (conn.getCatalog (), null, tableName.ToUpperperCase ()); while (rs.next ()) {primkeyName = rs.getString ("column_name");}} catch (sqlexception e) {e.printStackTrace ();} finalmente {jdbcutil.cloSeconn (conn);} return primkeyNAM @return */private boolean escapeSql (string sql, e entity, list <String> fileDList) {boolean flag = true; conexión conn = null; prepareSteTatement pstm = null; try {conn = jdbcutil.getConn (); pstm = conn.prepareStatement (sql); // asign = getFieldValue (entity, columname); pstm.setObject (i, val); i ++;} pstm.ExeCute ();} capt (sqlexception e1) {e1.printstacktace (); flag = false;} finalmente {jdbcutil.closeconn (conn);} flag;}/** * get the sql para el método * @param @param @param @param @param @param @param. TableName * @param prykey * @param filedList * @return */private string getModifySql (String TableName, String Prykey, List <String> FileDList) {StringBuffer Sql = New StringBuffer (); Sql.append ("Update") .Append (Tablename) .append ("Set"); List <String> Columnlist getTableColumns (TableName); for (String columnName: columnList) {if (! columnName.equalSignorEcase (prykey)) {fileDList.add (columnName); sql.append (columnName) .Append ("=?,");}} si (sql.Tostring (). end (",") {sql = nter StringBuffer (sql.substring (0, sql.length ()-1));} sql.append ("where") .append (prykey) .append ("=?"); Return sql.ToString ();} /** * ejecutar todo excutQuery (pageUtil <E> pageUtil, string sql, map <string, object> parammap, string tableName) {Connection conn = null; prepareStatement pstm = null; resultset rs = null; intit {conn = jdbcutil.getConn (); pstm = conn.prepareStatement (sql); int i = 1; for (string, inyet: inyet: inyet: inyet: inyet: inyet: inyet: inyet: inyet: Interm. paramMap.entrySet()) {Object val = entry.getValue();if(val instanceof java.lang.String){pstm.setString(i, "%"+val.toString()+"%");}else if(val instanceof java.lang.Integer){pstm.setInt(i, Integer.ParseInt (val.ToString ()));} i ++;} rs = pstm.ExecuteQuery (); list <E> list = getEntityList (rs); // Resultados de la consulta encapsulada Pageutil.setList (List); // Encapsular número total de dígitos dígitos pageUtil.setPageNumSum (getPageNumsss (parammap, tableName));} catch (excepción e) {E.PrintStackTrace ();} finalmente {jdbcutil.cloSeConn (conn);}}}/ ** * Obtener atributos en la tabla * @param entity * @param columnName * @return */ privado privado columnName) {class <?> cls = entity.getClass (); objeto value = null; // Obtener todos los atributos de miembro en el campo de clase [] Fields = cls.getDeClaredFields (); for (campo campo: fields) {// Obtenga el nombre de atributo FieldNameName = Field.getName (); // Término si el nombre de atributo es el mismo que el nombre de la columna el nombre de la columna el nombre de la columna del nombre de la columna (fieldName.equalSignorEcase (columname)) {// Obtenga el nombre del método de acuerdo con las reglas cadena MethodName = "get"+fieldName.substring (0,1) .ToUpperperCase ()+fieldName.substring (1); intente {// Objetivo de método de método según el método del método de método = cls.getmethod (método); ///////1) método.invoke (entidad);} catch (excepción e) {E.PrintStackTrace ();} ruptura;}} Valor de retorno;}/** * Guardar el método para obtener sql * @param tableName * @param prykey * @param fileDlist * @return */private string getSaveSql (string stryke = new StringBuffer (); sql.append ("insertar en") .Append (TableName) .Append ("("); List <String> columnList = getTableColumns (TableName); for (String String: ColumnList) {if (! String.equalsignorecase (PryKey)))) {sql.append (string) .Append (","); fileDList.Add (string);}} if (sql.ToString (). endswith (",")) {sql = new StringBuffer (sql.substring (0, sql.length ()-1);} sql.append (");"); <fileDlist.size (); i ++) {sql.append ("?,");} if (sql.ToString (). endswith (",")) {sql = new StringBuffer (sql.substring (0, sql.length ()-1)); /** * 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, tableName.ToUpperperCase (), null); while (rs.next ()) {string clummname = rs.getString ("column_name"); columnList.add (clumnname);}} catch (sqlexception e) {e.printstacktrace ();} finalmente {jdbcutil.closeconn (conn);} return columnList; } /** * Resultados de la consulta de encapsulación * @param rs * @return * @throws excepción * / @supressWarnings ("no verchado") Lista privada <E> getEntityList (resultSet RS) lanza excepción {list <e> list = new ArrayList <E> (); campo [] Fields = Cls.getDeclaredFielss (); (E) cls.newinStance (); for (campo campo: campos) {try {field.setAccessible (true); string columnName = field.getName (); string fieldType = field.getType (). GetSimplename (); if ("string" .equals (fieldType)) {field.set (e, rs.getstring (columname));} if ("entero" .equals (fieldType)) {field.set (e, rs.getInt (columname));}} catch (excepción e1) {e1.printstacktrace ();}} list.add (e);} Lista de retorno;}}}Archivo de configuración relacionado con MySQL config. Contenido de Properties
controlador = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/dbsda10? caracterSencoding = utf-8 username = root contraseña = rootROOT TEMFILE = c: // image = c: // imágenes
Clase de lectura de archivos de configuración configUtil
paquete com.shude.util; import java.io.ioException; import java.util.properties;/** * Lea el archivo de configuración * @author administrador * */public class ConfigUtil {private static configutil configUtil; cadena final estática privada Defalt_File_Path = "/config.properties"; Nombre de cadena estática privada; Propiedades privadas Pop; private configUtil () {init (); } private void init () {pop = new Properties (); intente {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 (nombre de cadena) {configUtil.name = name; if (configUtil == null) configUtil = new configUtil (); return configUtil; } / ** * Obtenga el valor a la derecha en el archivo de configuración * @param clave * @return * / public string getVal (tecla de cadena) {return pop.getProperty (clave); }}La condición anterior es que el nombre de campo de la base de datos debe corresponder y ser el mismo que el nombre en la clase de entidad, y hay nombres de tabla de datos relacionados y archivos de configuración relacionados con el nombre de la clase de entidad. Los archivos de configuración son los siguientes:
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.sentity.programinfo = Program_info = Program_info = Program_info
El artículo anterior JDBC implementa métodos básicos generales para agregar, eliminar, modificar y verificar es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.