Java操作数据库之dbutil+c3p0

资料下载:跟后面的JDBC一起打包,有需要的下载咯。下载的网址:http://download.csdn.net/detail/xiaozhegaa/9816808
这里写图片描述
连接池概念:传统方式找DriverManager要连接,数目是有限的。传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行 。 此时的连接并没有回收回去,而是操作系统每隔一定的时间回收。这样子的话,短时间内不能实现多用户的访问。会出错。所以就引入连接池的概念。
连接池的分类:DBCP和C3P0,都是Java开源的,都必须直接或间接实现javax.sql.DataSource接口
两种连接池的底层就是:不让你直接向数据库获取连接,而是通过连接池获取,既是连接与数据库中放一层连接池。看图
这里写图片描述
值得一提的是【扩展】Tomcat服务器本身也有连接池的功能,使用的是 DBCp.但是默认是不开启。需要配置。Hibernate框架使用的是C3p0连接池。
二:DBUtils框架:小型的操作数据库框架,目的是为了简化数据库的操作

//Dbutils主要掌握两个核心的类
    QueryRunner类:这是用来执行sql语句的类
        构造其有二种方式
            a)空参构造 new QueryRunner()
            b)通过DataSource构造  new QueryRunner(JdbcUtil.getDataSource())
            //上面两者有点小小区别,若是无带参数的,表示同一个线程实例,带参数的表示不是一个线程

    ResultsetHander接口
        BeanHandler/BeanListHandler:争对JavaBean 单个、集合Bean,下面一样
        ArrayHandler/ArrayListHandler:争对数组 
        MapHandler/MapListHandler:争对Map
        ScalarHandler:争对Long

//上面两个可能会有点难懂,看下面的案例源码就明白了,上述是从源码中总结出来的

三:dbutils开发步骤
第一步:导包C3P0包

c3p0-0.9.1.2.jar 连接池核心包
commons-dbutils-1.0.jar dbutils操作包
commons-logging.jar 错误日志包
这里写图片描述
第二步:新建c3p0-config.xml文件。位置放在src目录下,位置和文件命名是一样的
第三步:配置数据库连接信息

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mydb3</property>
    </default-config>
</c3p0-config>

这里写图片描述
第四步:写测试代码

//获取数据源,默认会去src文件夹下面加载c3p0-config.xml文件
    ComboPooledDataSource dataSource =  new ComboPooledDataSource();

//得到数据库操作对象
QueryRunner runner = new QueryRunner(dataSource );

//书写sql语句
String sql = "select * from user where id = ?";

//执行sql语句,这里需要特备说明:
    //第一个参数是:sql语句
    //第二个参数是:以一个数组形式传递参数,按照sql语句中的占位符代替
    //第三个参数是返回值的类型。这里有点难理解
    //举个例子,这里我是要返回一条数据,并且把它封装到Bean对象中,在上述的7个结果类中  ,发现要封装到Bean中有两个符合要求
    //BeanHandler/BeanListHandler,一个是封装单个,一个是封装集合。选择前者。并且把封装Bean类传递进去
User user = (User) query(sql,new Object[]{1},new BeanHandler(User.class));


总结来说:
    更新、删除,增加   都是 runner.update()。里面参数可以看一下提示。alt+/
    查找  runner.query():需要把数据封装

同样的可以打包一个包装类
这里写图片描述

演示案例
这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值