0
点赞
收藏
分享

微信扫一扫

Java web 第十三天

单调先生 2022-01-09 阅读 53

数据库连接池:

在使用jdbc编程时,每次访问数据库都需要创建连接对象,访问完毕后也需要断开连接(销毁对象)
比如说:网站的每日用户访问量是10万次,这时候就需要对数据库访问10万次,需要10万次创建和断开连接对象,频繁的创建和断开连接,这使访问数据库的效率非常低。
数据库连接池技术:管理连接对象。应用程序就不需要创建和断开连接对象,而是交给数据库连接池管理数据库连接池断开,不是销毁对象,而是把连接对象归还给连接池。

数据库连接池基本参数:

初始化大小:数据库连接池里面初始的连接对象个数最大连接数:数据库连接池里面最大的连接对象个数最大等待时间:用户通过连接池取连接对象时,需要等待的时间最大空闲连接:数据库连接池里面,在用户访问趋于稳定时,最大的空闲连接个数5.最小空闲连接:在用户访问趋于顶峰时,数据库连接池里面剩余的最小连接对象个数。

一、创建一个example01类,该类采用手动方式获取数据库的连接信息和数据源的初始化信息

二、创建dbcpconfig.properties 文件,该文件用于设置数据库的连接信息和数据源的初始化信息

三、创建一个example03类,该类采用C3P0数据源手动代码的方式获取Connection对象。

四、创建一个c3p0-config xml文件,用于设置数据库的连接信息和数据源的初始化信息 

 <?xml version="1.0" encoding="UTF-8"?>
  <c3p0-config>
     <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">
         jdbc:mysql://localhost:3306/jdbc
     </property>
    <property name="user">root</property>
    <property name="password">root</property>
    <property name="checkoutTimeout">30000</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
    <property name="maxStatements">200</property>
</default-config> 
<named-config name="itcast">
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">
           jdbc:mysql://localhost:3306/jdbc
    </property>
    <property name="user">root</property>
    <property name="password">root</property>
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">15</property>
</named-config>
</c3p0-config>
五、创建一个Example04类,该类中使用C3P0数据源从配置文件中获取Connection对象。

 DBUtils工具:

DBUtils工具介绍
为了更加简单地使用JDBC, Apache组织提供了个DBUtis 工具,它是提作数据库的一 一个组件,实现了对JDBC的简单封装,可以在不影响性能的情况下极大地简化JDBC的编码工作量。DBUtis工具可以在“tp:.mmo.h apache orpromons-oduisindex htm”"下载到,截止到目前它的最新版本为Apache Commons DbUtils 1.6。

2.2 QueryRunner 类
QuerRunner类简化了执行SQL语句的代码,它与ResultHerdler组合在一起就能完成大部分的数据库操作,大大地减少了编码量。

QueryRunner类提供了带有一个参数的构造方法,该方法以javax.sal.DataSource作为参数传递到QueryRunner的构造方法中来获取Connection 对象。

2.3 ResultSetHandler 接口
ResultSetHandler接口用于处理ResultSet结果集,它可以将结果集中的数据转为不同的形式。根据结果集中数据类型的不同,ResultSetHandler 提供了几种常见的实现类,具体如下。
1.BeanHandler:将结果集中的第1行数据封装到一个对应的JavaBean实例中。

2.BeanL istHandler:将结果集中的每一行数 据都封装到一个对应的JavaBean实例中,并存放到List里。

3.ScalarHandler:将结果集中某一条记录的其中某一列的数据存储成Object对象。另外,在ResultSetHandler接口中,提供了-个单独的方法handle (java.sql.ResultSet rs),如果上述实现类没有提供想要的功能,可以通过自定义-一个实现ResultSetHandler 接口的类,然后通过重写handle()方法,实现结果集的处理。

2.4 ResultSetHandler 实现类
2.3小节中介绍了ResultSetHandler 接口中常见实现类的作用。接下来,通过案例的形式,针对常见实现类的使用进行详细的讲解。
六、创建-一个名为BaseDao的类,该类中编写了一个通用的查询方法,具体实现方式如下:

七、 创建实体类User, 使用该类来封装User对象,具体实现方式如下:

package chapter10.chapter10.example;
public class User {
private int id;
private String name;
private String password;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
}
八、创建类ResultSetTest1, 该类用于演示BeanHandler类对结果集的处理,具体代码如下:

九、创建类RsesTetet该类用于演示Bensustander类对结果集的处理,具体代码如下:

 

 

举报

相关推荐

0 条评论