DBHelper
package com.nll.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DBHelper {
// controlador de carga generalmente solo carga una vez
estático {
intente {
// primer paso Cargue el controlador
//mysql5.0+ versión ("com.mysql.cj.jdbc.Driver") versión 8.0+ ("com.mysql.cj.jdbc.Driver")
Class.forName ("oracle.jdbc.OracleDriver") ;
} catch (ClassNotFoundException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
} Public
static Connection getConnection () {
// El segundo paso es establecer una conexión. También la encapsulamos. ¿Por qué es principalmente demasiado largo para escribir problemas?
Connection conn = null;
try {
// mysql se puede cambiar a "jdbc: mysql: // localhost: 3306 / [nombre de la base de datos]? allowPublicKeyRetrieval = true & serverTimezone = UTC & useSSL = false & characterEncoding = UTF-8"
conn = DriverManager.getConnection ("jdbc: oracle: thin: @ 127.0 .0.1: 1521: orcl "," scott "," scott ");
} catch (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
return conn;
}
// El tercer paso es para que nosotros escribimos la instrucción SQL instrucción SQL sólo un parámetro declaración preparada objetos dentro de ella y no la misma sentencia de función SQL no es lo mismo
// Así que terminamos instrucción SQL como parámetro a
// CRUD Ambos son el mismo método executeUpdate y el valor de retorno es el mismo
// por lo que agregamos, eliminamos y cambiamos juntos cuando encapsulamos
public int doUpdate (String sql, Object ... params) {
// Primero obtenga la conexión
Connection conn = getConnection ();
// Determine un valor de retorno
int result = -1;
intente {
// objeto
PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
// ¿Qué pasa con los parámetros, habrá marcadores de posición?
// Debido a que no solo
agregamos , eliminamos y modificamos los parámetros de los miembros, también tenemos parámetros para nuestra consulta, por lo que también encapsulamos doParams (pstmt, params);
// Ejecuta la instrucción SQL
result = pstmt.executeUpdate ();
closeAll (null, conn, pstmt);
} catch (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
resultado de retorno;
}
lista pública <Map <String, String >> findAll (String sql, Object ... params) {
List < Map <String, String >> list = new ArrayList <Map <String, String >> ();
intente {
// Primero obtenga la conexión
Connection conn = getConnection ();
ResultSet resultset = null;
// Objeto
PreparedStatement PreparedStatement pstmt = conn.prepareStatement (sql);
// ¿Qué pasa con los parámetros, habrá marcadores de posición?
// Porque no solo la adición, eliminación y
modificación de parámetros de miembros, también tenemos parámetros para nuestra consulta, por lo que también encapsulamos doParams (pstmt, params);
resultset = pstmt.executeQuery ();
// Cómo obtener la clave de Map- "El campo de esta instrucción sql
// Primero debemos obtener los metadatos a través del conjunto de resultados
ResultSetMetaData rsmd = resultset.getMetaData ();
String [] columnNames = new String [rsmd .getColumnCount ()];
for (int i = 0; i <columnNames.length; i ++) {
// Tenga en cuenta que las claves que obtenemos aquí están en mayúsculas, por lo que cambiamos a
columnNames en minúsculas [i] = rsmd.getColumnName ( i + 1) .toLowerCase ();
}
while (resultset.next ()) {
Map <String, String> map = new HashMap <String, String> ();
// Según el nombre de la columna para tomar el valor
de (String cn: columnNames) {
Valor de cadena = resultset.getString (cn);
map.put (cn, valor);
}
// 当 一条 取 完 放到 lista 里面 去
lista.add (mapa);
}
closeAll (conjunto de resultados, conn, pstmt);
} catch (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
lista de retorno;
}
private void closeAll (ResultSet rs, Connection conn, PreparedStatement pstmt) {
// TODO Método de generación automática stub
try {
if (rs! = null) {
rs.close ();
}
if (conn! = null) {
conn.close ();
}
if (pstmt! = null) {
pstmt.close ();
}
} catch (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
}
doParams privado vacío (PreparedStatement pstmt, Object ... params) {
// Primero determina si el usuario no ha pasado el parámetro, luego no necesitamos inyectar el parámetro
if (params! = null && params.length> 0) {
// Solo inyectamos el parámetro Object ... el parámetro cuantificador , Esencialmente una matriz
para (int i = 0; i <params.length; i ++) {
// todo es un objeto
try {
pstmt.setObject (i + 1, params [i]);
} catch (SQLException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
}
}
}
}
Test.java
paquete com.nll.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; public class Test1 { public static void main (String [] args) { // TODO Código auxiliar de método generado automáticamente // Probar la encapsulación de jdbc // Debido a que no somos un método estático, primero cree una instancia de DBHelper db = new DBHelper (); // // escriba una instrucción SQL sin parámetros // String sql1 = "actualizar autoincre_demo set id = id + 1"; // int result1 = db.doUpdate (sql1); // if (result1> 0) { // System.out.println ("modificado con éxito"); // } else { // System.out.println ("modificado falló" ); // } // // Escribir sentencia sql (con parámetros) // String sql = "actualizar autoincre_demo set NAME =?"; // // Ejecutar // int result = db.doUpdate (sql, "Haikou" ); // if (resultado> 0) { // System.out.println ("Modificado con éxito"); // } else { // System.out.println ("Error en la modificación"); // } // 查询 操作 String sql2 = "select * from autoincre_demo" ; Lista <Mapa <Cadena, Cadena >> lista = db.findAll (sql2); for ( int i = 0; i <list.size (); i ++ ) { System.out.println (list.get (i) .get ( "nombre" )); } } }