您的位置:首页 > 数据库

c3p0+DButils操作数据库

2016-10-05 09:01 381 查看

c3p0+DButils操作数据库

概述

不管是在无框架的Servlet+Jsp开发中,还是在后续的基于框架的开发中,c3p0连接池技术和Dbutils工具的结合会使得前台和后台之间的数据库连接变的十分的简单,操作方便,我们只需要关注SQL语句即可,下面将从实际角度讲解这两者结合后应该怎么使用。

使用

首先要导入c3p0和dbutils的jar包

接着在src目录下存放c3p0的配置文件,配置文件是c3p0自己去识别并读入的,我们不需要在代码中做任何的操作,但是配置文件一般命名为:c3p0-config.xml,该配置文件中的内容如下:

<c3p0-config>
<default-config>
<property name="driverClass">org.postgresql.Driver</property>
<property name="jdbcUrl">jdbc:postgresql://192.168.100.120:5432/postgres</property>
<property name="user">postgres</property>
<!-- <property name="password">root</property>  -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>

</default-config>

<!-- 配置多数据源时使用,在ComboPooledDataSource核心类中存在一个带String参数的构造函数,该构造函数当不用写时,默认读取的是default-config
当使用该参数,并且写上name-config中的name参数时,会去读取下面的这个配置文件
-->
<named-config name="oracleConfig">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///day17</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
</named-config>

</c3p0-config>


新建com.jpzhutech.utils.JdbcUtils.java,使得c3p0的配置文件与我将要写的工程建立联系

package com.jpzhutech.utils;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcUtils {

private static  DataSource dataSource;
static {
dataSource = new ComboPooledDataSource();
}

public static QueryRunner getQueryRuner(){
return new QueryRunner(dataSource);
}

//测试是否成功的连接数据源
@Test
public void test() throws SQLException{
System.out.println(dataSource.getClass());    //不报错并返回class com.mchange.v2.c3p0.ComboPooledDataSource,说明已经成功的连接数据源
System.out.println(dataSource.getConnection().toString());
}
}


在Dao接口的实现类中写入类似下面的内容,该内容与你所要实现的内容有关

package com.jpzhutech.dao.impl;

import java.sql.SQLException;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.runner.Request;

import com.jpzhutech.dao.IAdminDao;
import com.jpzhutech.entity.Admin;
import com.jpzhutech.utils.JdbcUtils;

public class AdminDao implements IAdminDao {

@Override
public Admin findByNameAndPwd(Admin admin) {
try {
//?在DButils中表示一个占位符
String sql = "select * from admin where userName=? and pwd=?";
return JdbcUtils.getQueryRuner().query(sql,
new BeanHandler<Admin>(Admin.class), admin.getUserName(),  //admin.getUserName()获取其用户名
admin.getPwd());  //admin.getPwd()获取其密码
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

@Override
public Boolean addAddmin(Admin admin) {
System.out.println("将新创建的用户增加到数据库中");

// 将数据插入到数据库中
try {
JdbcUtils.getQueryRuner().update(
"insert into admin(id,username,pwd) values(?,?,?)", 40,
admin.getUserName(), admin.getPwd());
return true;
} catch (SQLException e) {
System.out.println("插入到数据库中操作失败");  //应该将此信息发送到一个新的页面

return false;

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet c3p0 jsp jar DButils