ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

JavaWeb 数据库连接池与DBUtils工具 (13)

2022-01-08 18:58:45  阅读:194  来源: 互联网

标签:13 return JavaWeb sex user DBUtils public 连接池 String


一、数据库连接池(数据源)
1.数据库连接池是什么

数据库连接池是为了避免“反复创建和关闭连接数据库对象Connection”,提高程序效率而设计的一种负责“分配”、“管理”、“关闭”数据库连接对象的池技术。

工作逻辑是在数据库连接池初始化时,会建立指定个数据库连接对象。当外界申请使用数据库连接对象时,会先检查是否有空闲连接对象若有(&&连接池中使用的连接对象数目<最大活跃连接对象数目&&最小空闲连接对象数目>连接池中空闲连接对象数目)就返回给其使用,否则等待;若没有(连接时中所有连接对象数目<最大闲置连接对象数目&&连接池中使用的连接对象数目<最大活跃连接对象数目)则新建;否则等待。使用完后将连接对象回收到数据库连接池中,数据库连接池关闭时会释放所有连接对象资源。

数据库连接池中,最小连接闲置对象数目<=连接对象数目<=最大闲置连接对象数目
2.数据库连接池的相关实现接口与类
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、DBUtils工具
在这里插入图片描述
通过ComboPooledDataSource()创建数据源对象

package dao;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
/**
 * Created by lc on 2018/8/12.
 */
public class C3p0Utils {
   public static DataSource ds=null;
    //初始化C3P0数据源
    static {
        ComboPooledDataSource cpds=new ComboPooledDataSource();
        //设置连接数据库需要的配置信息
        try {
            cpds.setDriverClass("com.mysql.jdbc.Driver");
            cpds.setJdbcUrl("jdbc:mysql://localhost:3306/shop");
            cpds.setUser("root");
            cpds.setPassword("root");
            //设置连接池的参数
            cpds.setInitialPoolSize(5);//初始连接数目
            cpds.setMaxPoolSize(15);//最大连接数目
            ds=cpds;
        }catch (Exception e){
            throw new ExceptionInInitializerError(e);
        }
    }
    //返回数据源
    public  static DataSource getDataSource(){
        return ds;
    }
}

DBUtils工具
为了更加简单地使用JDBC, Apache组织提供了一一个DBUtils工具,它是操作数据库的一个组件,实现了对JDBC的简单封装,可以在不影响性能的情况下极大地简化JDBC的编码工作量。

package dao;
import javabeen.User;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.*;
public class Userdao {
    public boolean Vfpassword(User user) throws SQLException{
        //创建QueryRunner对象,并从C3P0连接池获取数据源
        QueryRunner runner=new QueryRunner(C3p0Utils.getDataSource());
        //写SQL语句
        String sql="SELECT  * FROM user WHERE username=? AND password=?";
        //调用方法
        User user1 = (User) runner.query(sql,new BeanHandler(User.class), new Object[]{user.getUsername(),user.getPassword()});
        if (user1!=null){
            return true;
        }
        else {
            return false;
        }
    }
    public boolean register(User user) throws SQLException{
        QueryRunner runner=new QueryRunner(C3p0Utils.getDataSource());
        String sql="INSERT INTO user VALUES (?,?,?)";
        int i=runner.update(sql, new Object[]{user.getUsername(), user.getPassword(), user.getTel()});
        System.out.println(i);
            if (i>0){
                System.out.println(user.getUsername()+"注册成功!");
                return true;
            }
      else{
                System.out.println("注册失败!");
                return false;
            }
 
    }
}

DBUtils工具类
Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

核心功能
QueryRunner 中提供对sql语句操作的API.
ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
DbUtils类,他就是一个工具类,定义了关闭资源与事务处理相关方法.
JavaBean组件

需要实现 序列化接口, Serializable (暂时可以省略)
提供私有字段: private 类型 变量名;
提供 getter 和 setter
提供 空参构造

/**
 * javabean
 * 用来存储数据
 */
public class Employee implements Serializable {
    
    private int eid;
    private String ename;
    private int age;
    private String sex;
    private double salary;
    private Date empdate;

    public Employee() {
    }

    public Employee(int eid, String ename, int age, String sex, double salary, Date empdate) {
        this.eid = eid;
        this.ename = ename;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
        this.empdate = empdate;
    }

    public int getEid() {
        return eid;
    }

    public void setEid(int eid) {
        this.eid = eid;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public Date getEmpdate() {
        return empdate;
    }

    public void setEmpdate(Date empdate) {
        this.empdate = empdate;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "eid=" + eid +
                ", ename='" + ename + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", salary=" + salary +
                ", empdate=" + empdate +
                '}';
    }
}

标签:13,return,JavaWeb,sex,user,DBUtils,public,连接池,String
来源: https://blog.csdn.net/dailingQWQ/article/details/122384457

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有