数据库连接池
连接池也是使用四大参数来进行连接
三种方式:
使用dbcp来连接操作
使用之前首先导入包:
Commons-dbcp-1.4.jar
Commons-pool-1.3.jar
Mysql-commerctor-java-5.1.2.jar
然后:
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/shujuku1");
dataSource.setUsername("root");
dataSource.setPassword("123");
Connectioncon = dataSource.getConnection();
Con.close();
链接池只是对close进行了增强,调用之后就会把当前链接归还给链接池
使用c3p0来操作
导包:c3p0-0.9.1.2.jar 和 mchange-commons-java-0.2.3.4.jar
ComboPooledDataSourceda= new ComboPooledDataSource();
然后da.set…();设置四大参数,然后得到Connection对象。
C3p0也可以指定配置文件:
要求:文件名称 c3p0-config.xml 文件位置:必须在src下
<c3p0-config>
<defaul-config>默认配置
//配置四大参数
<property name = "jdbcUrl">jdbc:mysql://localhost:3306/shujuku1</property>
<property name = "driverClass">com.mysql.jdbc.Driver</property>
<property name = "user">root</property>
<property name = "Password">123</property>
//配置池参数
<property name = "acquireIncrement">3</property>
<property name = "initialPoolSize">10</property>
</defaul-config>
</c3p0-config>
这样的话。不用引入直接就可以调用Connection对象
ComboPooledDataSourceda= new ComboPooledDataSource(“default-config”);
装饰者模式
不知道被增强对象的具体类型,可以使用。
IO流:
1 字节: InputSteram , OutputSteram
2 字符: reader writer
InputSteram: FileInputSteram (字节流,绑定磁盘文件),BufferedInputSteram(装饰流,创建时需要给定一个底层对象,给他添加缓冲区)
ThreadLocal(多线程问题)
通常用在一个类的成员上,多个线程访问他时,每个线程都有自己的内容,互不影响。
Private ThreadLocal<String> username = newThreadLocal<String>();
dbUtils
导包:
Commons-dbUtils.jar
使用过程:
得到QueryRunner对象
QueryRunner qr = new QueryRunner(数据库连接池对象JdbcUtils.getDataSource());
Qr可以调用的方法:
Updata():int updata(String sql,Object…params)可以增删改
Query():T query(String sql ,ResultSetHandler rsh , Object…params);
可以执行查询操作。
ResultSetHandler接口:
BeanHandler:构造器需要一个Class类型的参数,用来把结果集转换成javaBean对象
BeanListHandler:也需要Class参数,转换成List对象,多个JavaBean
MapHandler:把一行结果集转换成Map对象
MapListHandler:List<Map>
ScalarHandler:通常用于结果集单行单列的,返回一个Object
public void fun1() throws SQLException, Exception{
QueryRunner qr = newQueryRunner(JdbcUtils.getDataSource());
String sql = "insertinto stu values(?,?,?,?)";
Object[] params = {"2016","aaa",29,"nan"};
qr.update(sql,params);
项目实例:客户管理系统
先写原型:只有页面,并没有实际的功能;
功能分析:
添加客户;查询;编辑;删除;多条件组合查询;
创建表
创建包:公司名.项目名.分层
com.haut.damain
com.haut.Dao
com.haut.service
com.haut.servlet