一、使用场景:
大型高并发应用里? ? ? ? ?使用连接池的好处:就是可以限制应用的连接数,另外,不用再额外地去创建每个连接,MySQL创建连接的开销也是较大的,因为创建一个新连接相当于MySQL创建了一个thread。
二、工作原理:
1,创建数据库配置文件jdbc.properties?
url =jdbc:mysql://localhost:3306/stu_score?serverTimezone=UTC
user = user_hyq
password = 123456
driver = com.mysql.cj.jdbc.Driver
?2,定义一个使用jdbc连接数据库的工具类BaseDao.java
public class BaseDao {
public Connection conn = null;
public PreparedStatement pstmt = null;
public ResultSet rs = null;
static String url = null;
static String user = null;
static String password = null;
static String driver = null;
// 使用静态块
static {
//构造对象
Properties pro = new Properties();
//构造流
// InputStream is=BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
//加载配置文件
pro.load(new FileReader("src/jdbc.properties"));
//获取属性值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获得连接对象
*
* @return Connection
*/
public Connection getConnection() {
//第一步:加载驱动
try {
Class.forName(driver);
//第二步:获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
三、实现步骤
1,配置tomcat中的conf--->context.xml
<Context>
<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="newsu"
password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?
useUnicode=true&characterEncoding=utf-8" />
</Context>
2,配置web.xml
? ? ? 注意:<res-ref-name><res-type>?<res-auth>与配置context.xml时中的<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource" />一一对应
<resource-ref>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3,添加jar包
四、代码的编写
注意:DateSource包导入的是javax.sql.DataSource
Context ctx = new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news");
conn = ds.getConnection();
|