首页 > 编程语言 >JavaWeb对于C3P0链接池的CURD实例原理详解

JavaWeb对于C3P0链接池的CURD实例原理详解

时间:2022-10-19 11:07:34浏览次数:45  
标签:curriculum JavaWeb Curriculum C3P0 QueryRunner CURD SQLException new public

一. java对于C3P0链接池的详解

1.1 C3P0是什么?

c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。

image-20220926131445681

1.2 C3P0工作原理

开源JDBC连接池C3P0连接池在程序操作数据库之前根据配置文件创建一定数量的连接。当线程需要时,它会直接删除连接,从而缩短创建连接的时间。使用连接时,它会释放连接并将其放回连接池。如果连接池中的连接用完,程序将根据配置文件中配置的数据创建另一批,并在使用后将其放回连接池中,关闭连接是不正确的。

1.3 C3P0的特点

1.资源的高效利用

2.更快的系统反应速度

3.减少了资源独占的风险

4.统一的连接管理,避免数据库连接泄露

5.C3P0有自动回收空闲连接功能

二.C3P0简单Demo

实验名称:数据库连接池与DBUtils工具。

实验要求:掌握数据库连接池与DBUtils工具的使用方法。

依赖的包:

image-20220926121406376

  1. c3p0-0.9.5.2.jar
  2. mchange-commons-java-0.2.15.jar
  3. mysql-connector-java-8.0.11.jar

1.新建c3p0-config.xml文件,这个是简单的配置。

在src根目录下创建一个c3p0-config.xml文件,用于设置数据库的连接信息和数据源的初始化信息。

注意,在标准的meaven项目中,c3p0-config.xml一个新建在resources文件夹下:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
		<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/school_work?useSSL=false&amp;serverTimezone=Hongkong&amp;characterEncoding=utf-8&amp;autoReconnect=true</property>
		<property name="user">root</property>
		<property name="password">123456</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">10</property>
		<property name="maxPoolSize">20</property>
	</default-config>
</c3p0-config>

2.在项目的src目录下,创建一个名为utils的包,然后在该包下创建C3p0Utils类,该类用于创建数据源。

private static DataSource ds;
static {
    ds = new ComboPooledDataSource();
}
public static DataSource getDataSource() {
    return ds;
}

3.创建Curriculum实体类,作用于封装该对象:

private int id;
private String curriculumName;
private double price;
private String introduction;

数据库如下:

image-20220926122358859

4.创建DBUtilsDao类;

在项目的src目录下,然后在该包下创建一个DBUtilsDao类,该类实现了对user表增删改查的基本操作。

  • 查询所有,返回List集合,创建QueryRunner对象,写SQL语句
public List findAll() throws SQLException {
    QueryRunner runner =new QueryRunner(C3p0Utils.getDataSource());
    String sql ="select * from curriculum";
    List list =(List) runner.query(sql,
            new BeanListHandler(Curriculum.class));
    return list;
}
  • 查询单个,返回对象。创建QueryRunner对象,写SQL语句。
    public Curriculum find(int id) throws  SQLException{
        QueryRunner runner=new QueryRunner(C3p0Utils.getDataSource());
        String sql ="select * from curriculum where id=?";
        Curriculum curriculum =(Curriculum) runner.query(sql,
                new BeanHandler(Curriculum.class),new Object[] {id});
        return curriculum;
    }
  • 添加用户的操作,创建QueryRunner,写SQL语句。

    public Boolean insert(Curriculum curriculum) throws SQLException{
        QueryRunner runner=new QueryRunner(C3p0Utils.getDataSource());
        String sql = "insert into curriculum (id,curriculumName,price,introduction) values (?,?,?,?)";
        int num =runner.update(sql, new Object[] {curriculum.getId(), curriculum.getCurriculumName(), curriculum.getPrice(),curriculum.getIntroduction() });
        if (num>0)
            return true;
        return false;
    }
    
  • 修改用户的操作,创建QueryRunner对象,写SQL语句。

public Boolean update(Curriculum curriculum) throws  SQLException{
    QueryRunner runner=new QueryRunner(C3p0Utils.getDataSource());
    String sql="update curriculum set curriculumName=?,price=?,introduction=? where id=?";
    int num =runner.update(sql,new Object[] {curriculum .getCurriculumName(),       curriculum.getPrice(),curriculum.getIntroduction(),curriculum.getId()});
    if (num>0)
        return true;
    return false;
}
  • 删除用户的操作,创建QueryRunner对象,写SQL语句。
public Boolean delete(int id) throws SQLException{
    QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());
    String sql = "delete from curriculum where id=?";
    int num=runner.update(sql,id);
    if(num>0)
        return true;
    return false;
}

2.1 增加CreateDemo

5.写添加数据库的类:对增加操作进行测试。

创建类:CreateDemo

    Curriculum curriculum =new Curriculum();
    curriculum.setId(3);
    curriculum.setCurriculumName("Springboot基础学习课程");
    curriculum.setPrice(99);
    curriculum.setIntroduction("包含Springboot基础的全套学习课程");
    boolean b =dao.insert(curriculum);
    System.out.println(b);
}
public static void main(String[] args) throws SQLException{
    testInsert();
}

执行结果图:

image-20220926122943846

image-20220926122952274

2.2 删除DeleteDemo

  1. 写删除数据库的类。testdelete。

    public static void testdelete() throws SQLException {
        boolean b =dao.delete(5);
        System.out.println(b);
    }
    public static void main(String[] args) throws SQLException{
        testdelete();
    }
    

    测试结果如下:

    image-20220926130926841

image-20220926130938620

2.3 更新 UpdateDemo

7.写一个更新目标类。代码如下:

public static void testupdate() throws SQLException {
    Curriculum curriculum = new  Curriculum();
    curriculum.setId(1);
    curriculum.setCurriculumName("更改完成");
    curriculum.setPrice(200);
    curriculum.setIntroduction("包含java基础的全套学习课程");
    boolean b =dao.update(curriculum);
    System.out.println(b);
}
public static void main(String[] args) throws SQLException{
    testupdate();
}

测试结果如下:

image-20220926131122551

image-20220926131131953

2.4 查找 FindDemo

8.读取目标数据库里存储的内容,过程如下:

public static void testfind() throws SQLException {
    Curriculum curriculum = dao.find(1);
    System.out.println("id为:"+curriculum.getId()+"课程名为:"+curriculum.getCurriculumName()+"价格为:"
                       +curriculum.getPrice()+"课程介绍:"+curriculum.getIntroduction());
}
public static void main(String[] args) throws SQLException{
    testfind();
}

测试结果如下:

image-20220926131226293

标签:curriculum,JavaWeb,Curriculum,C3P0,QueryRunner,CURD,SQLException,new,public
From: https://blog.51cto.com/u_15568258/5769000

相关文章

  • 560数据库连接池_c3p0_基本使用and 561数据库连接池_c3p0_配置演示
    数据库连接池_c3p0_基本使用(1)步骤导入两个jar包c3po-o.9.5.2.jar   mchange-commons-java-o.2.12.jar还需要导入数据库的驱动jar包mysql-connector-java-5.1.47......
  • JavaWeb之MVC开发模式之商品实例CURD详解
    三层MVC开发模式架构使用自己设计的商城实体类创建对应的数据库表和类完成增删改查管理模块。(1)不使用MVC设计模式完成增删改查管理功能。(2)使用MVC设计模式完成增删改查管......
  • 数据库连接池-c3p0-基本使用、配置演示
    数据库连接池-c3p0-基本使用步骤:导入jar包(3个)c3p0-0.9.5.2.jar  mchange-commons-java-0.2.11.jar  mysql-connector-java-5.1.47.jar定义配置文件:......
  • javaweb实操之session'
    什么是session服务器会给一个用户(浏览器)创建一个session对象一个session独占一个浏览器,只要浏览没有关闭,这个session就存在用户登录之后,整个网站都可以访问->保存用......
  • javaweb
    <td><astyle="color:blue"href='showall.jsp?name=<%=(d.getName())%>'><%=(d.getName())%></a></td>                   ......
  • JavaWeb(一):MySql基础
    目录​​1、数据库相关概念​​​​1.1数据库​​​​1.2数据库管理系统​​​​1.3常见的数据库管理系统​​​​1.4SQL​​​​2、MySQL​​​​2.1MySQL安装​​​......
  • javaweb学习记录
    学习javaweb是完完全全自学的,从mysql,tomcat,到Servlet,html都是自学的,主要是看黑马次程序员,但是因为时间原因,我并没有哪个都看,在寒假时我需要再次观看一遍。首先......
  • JAVAWEB学习——JDBC连接及相关操作
    //加载数据库驱动MySQL://1MySQL驱动:com.mysql.jdbc.Drive//2Oracle驱动:oracle.jdbc.driver.OracleDriver//3SQLS......
  • javaweb
    学习文档:https://blog.csdn.net/qq_36188127/article/details/109370717学习视频:https://www.bilibili.com/video/BV12J411M7Sj网站访问流程:1.输入一个域名,回车,2.检查本机......
  • javaweb链接到数据库(mysql)操作
    准备:配置好数据库,下好mysqlconnect第一步:将myconnec文件复制到webapp文件下WEB-INF的lib文件中,然后右键构建路径。第二步:定义String类型的Name(数据库的用户名)和psw(数......