package com.FSXML.util;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class JDBCUtil {
public static String driverClassName;
public static String jdbcurl;
public static String username;
public static String password;
@Value(value ="${spring.datasource.ningxiadatacenterdb.driver-class-name}")
public void setDriverClassName(String driver){
driverClassName = driver;
}
@Value(value = "${spring.datasource.ningxiadatacenterdb.jdbcurl}")
public void setJdbcurl(String url){
jdbcurl = url;
}
@Value(value = "${spring.datasource.ningxiadatacenterdb.username}")
public void setUsername(String user){
username = user;
}
@Value(value = "${spring.datasource.ningxiadatacenterdb.password}")
public void setPassword(String pswd){
password = pswd;
}
/**
* 连接数据库
* @return
*/
public static Connection getConnetions(){
try {
try {
Class.forName(driverClassName);
}catch (ClassNotFoundException e){
e.printStackTrace();
}
return DriverManager.getConnection(jdbcurl, username, password);
}catch (SQLException e){
e.printStackTrace();
}
return null;
}
/**
* 查询多条记录
* @param sql
* @param args
* @return
*/
public static List<Map> queryList( String sql, Object ...args ){
List<T> list = new ArrayList<>();
Connection conn = null;
PreparedStatement rs = null;
ResultSet resultSet = null;
//1:准备一个List<Map<String, Object>>集合,其中key为列名,value为列值,每一个map对应一条记录
List<Map> listMap = new ArrayList<>();
try {
//获取数据库连接
conn = getConnetions();
rs = conn.prepareStatement(sql);
//填充占位符
for(int i = 0; i < args.length; i++){
rs.setObject(i+1, args[i]);
}
//获取结果集
resultSet = rs.executeQuery();
//2:得到jdbc的元数据
ResultSetMetaData rsmd = rs.getMetaData();
while(resultSet.next()){
Map<String, Object> map = new HashMap<>();
for(int i = 0; i < rsmd.getColumnCount(); i++){
//游标是从1开始的
String columnLabel = rsmd.getColumnLabel(i+1);
Object columnValue = resultSet.getObject(columnLabel);
map.put(columnLabel, columnValue);
}
//3:把一条记录map放入到listMap中
listMap.add(map);
}
} catch (Exception e) {
e.printStackTrace();
}
return listMap;
}
/**
* 新增,修改,删除
* @param sql
* @return
*/
public static int update(String sql){
Connection conn = null;
PreparedStatement ps = null;
int result=0;
try {
//创建数据库连接
conn = getConnetions();
//创建执行SQL的prepareStatement对象
ps = conn.prepareStatement(sql);
//用于增删改操作
result = ps.executeUpdate();
} catch (Exception e) {
System.out.println("出现异常:"+e.getMessage());
}
return result;
}
}