DBuit:简化封装
package cn.hp.DBuit;
import cn.hutool.db.DbUtil;
import java.sql.*;
import java.util.*;
public class DBuit {
//常量大写
private static final String URL = "jdbc:mysql://127.0.0.1:3306/mydb?serverTimezone=UTC&characterEncoding=utf8";
private static final String NAME = "root";
private static final String PASSWORD = "123456";
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static Connection con=null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
//加载数据库驱动
//static静态代码块,在jvm加载类的时候启用,在一个类中可以有多个static代码块,根据static的顺序来运行
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
* @return
*/
public static Connection getCon(){
try {
con = DriverManager.getConnection(URL,NAME,PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
//查询(用List泛型存俩值)
public List<Map> select(String sql, Object... obj) {
List<Object> objects = Arrays.asList(obj);
//使用Map集合,可以不需要再封装数据库
List<Map> list=new ArrayList<>();
//获取数据库连接
con = DBuit.getCon();
try {
ps = con.prepareStatement(sql);
//赋予预编译对象的值
//(sql+" ").split("\\?") sql+" "这里的空格切记不能少 长度的下标从0开始起,所以?的数量要减去1
for (int i = 0; i < (sql+" ").split("\\?").length - 1; i++) {
ps.setObject(i + 1, objects.get(i));
}
rs = ps.executeQuery();
//ResultSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象
//getMetaData() 得到数据集的列数
ResultSetMetaData metaData=rs.getMetaData();
while(rs.next()){
Map map = new HashMap();
//循环获取数据 这里的下标是从1开始
for (int i = 1; i <= metaData.getColumnCount()