实现类
package datasource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import utils.DataSourceUtil;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class DataSourceDemo {
public static void main(String[] args) throws Exception {
// 创建Properties对象
// Properties pro = new Properties();
// 使用ClassLoader调用方法将文件转换成io流
// 加载配置文件
// InputStream is = ClassLoader.getSystemResourceAsStream("druid.properties");
// 调用Properties的方法读取io流中的数据
// pro.load(is);
// 调用DruidDataSourceFactory(Druid数据资源工厂)中的createDataSource(创建数据资源)
// 初始化连接池对象
// DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);
DataSource source = DataSourceUtil.getSource();
// 建立连接
Connection conn = source.getConnection();
// 执行sql语句
PreparedStatement pmt = conn.prepareStatement("SELECT * from getandset where name = ?");
// 将?替换
pmt.setObject(1,"zhangsan");
// 执行查询
ResultSet resultSet = pmt.executeQuery();
// 和迭代器的.next()意思差不多,判断下一个是否有数据
while (resultSet.next()){
// 调用方法获取对应的数据,数据是什么类型就get什么类型,参数是数据所在第几列
String string = resultSet.getString(1);
int anInt = resultSet.getInt(2);
System.out.println(string);
System.out.println(anInt);
}
pmt.close();
conn.close();//归还连接
}
}
工具类
package utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.util.Properties;
public class DataSourceUtil {
private static DataSource dataSource;
static {
try {
Properties pro = new Properties();
InputStream is = ClassLoader.getSystemResourceAsStream("druid.properties");
pro.load(is);
is.close();
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getSource() throws Exception {
return dataSource;
}
}