public classJdbcUtil {//表示定义数据库的用户名
private staticString USERNAME ;//定义数据库的密码
private staticString PASSWORD;//定义数据库的驱动信息
private staticString DRIVER;//定义访问数据库的地址
private staticString URL;//定义数据库的链接
privateConnection connection;//定义sql语句的执行对象
privatePreparedStatement pstmt;//定义查询返回的结果集合
privateResultSet resultSet;static{//加载数据库配置信息,并给相关的属性赋值
loadConfig();
}/*** 加载数据库配置信息,并给相关的属性赋值
* 从项目的jdbc.properties文件读取信息
* 然后设置连接参数*/
public static voidloadConfig() {try{
InputStream inStream= JdbcUtil.class.getResourceAsStream("/jdbc.properties");
Properties prop= newProperties();
prop.load(inStream);
USERNAME= prop.getProperty("jdbc.username");
PASSWORD= prop.getProperty("jdbc.password");
DRIVER= prop.getProperty("jdbc.driver");
URL= prop.getProperty("jdbc.url");
}catch(Exception e) {throw new RuntimeException("读取数据库配置文件异常!", e);
}
}publicJdbcUtil() {
}/*** 获取数据库连接
*
*@return数据库连接*/
publicConnection getConnection() {try{
Class.forName(DRIVER);//注册驱动
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); //获取连接
} catch(Exception e) {throw new RuntimeException("get connection error!", e);
}returnconnection;
}/*** 执行更新操作
*
*@paramsql
* sql语句
*@paramparams
* 执行参数
*@return执行结果
*@throwsSQLException*/
public boolean updateByPreparedStatement(String sql, List>params)throwsSQLException {boolean flag = false;int result = -1;//表示当用户执行添加删除和修改的时候所影响数据库的行数
pstmt =connection.prepareStatement(sql);int index = 1;//填充sql语句中的占位符 依次填入预处理语句所需的参数
if (params != null && !params.isEmpty()) {for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i));
}
}
result=pstmt.executeUpdate();
flag= result > 0 ? true : false;returnflag;
}/*** 执行查询操作
*
*@paramsql
* sql语句
*@paramparams
* 执行参数
*@return*@throwsSQLException*/
public List> findResult(String sql, List>params)throwsSQLException {//创建泛型为Map类型的List
List> list = new ArrayList>();//预处理语句参数索引
int index = 1;
pstmt=connection.prepareStatement(sql);//依次填入参数
if (params != null && !params.isEmpty()) {for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i));
}
}//执行预处理语句 获得结果集
resultSet =pstmt.executeQuery();//获取源数据
ResultSetMetaData metaData =resultSet.getMetaData();//获取源数据的条数
int cols_len =metaData.getColumnCount();//遍历resultSet将数据放入map中 再将map放入list中
while(resultSet.next()) {
Map map = new HashMap();for (int i = 0; i < cols_len; i++) {
String cols_name= metaData.getColumnName(i + 1);
Object cols_value=resultSet.getObject(cols_name);if (cols_value == null) {
cols_value= "";
}
map.put(cols_name, cols_value);
}
list.add(map);
}returnlist;
}/*** 释放资源*/
public voidreleaseConn() {if (resultSet != null) {try{
resultSet.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (pstmt != null) {try{
pstmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (connection != null) {try{
connection.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}