数据库连接池之Druid

数据库连接池之Druid_第1张图片

在系统启动前初始化一个容器(集合),在容器中创建许多的数据库,每当有用户来访问,我们就拿出一个数据库来提供服务,服务完成后就将数据库归还到容器中。如果有一个数据库一直被占有且不被使用,有人在排队的话,会强制断开连接并且将数据库分配给有需要的人。

这样的好处可以使数据库资源重用,提高系统的响应速度,并且避免数据库连接遗漏。 

数据库连接池之Druid_第2张图片

/*
Druid数据库连接池演示
 */
public class DruidDemo {
    public static void main(String[] args) throws Exception {
        //1、倒入jar包

        //2、定义配置文件

        //3、加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
        //4、获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5、获取数据库链接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }
}
配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/bd1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# ³õʼ»¯Á¬½ÓÊýÁ¿
initialSize=5
# ×î´óÁ¬½ÓÊý
maxActive=10
# ×î´óµÈ´ýʱ¼ä
maxWait=3000

JDBC练习->数据库连接池

package com.XiangMu;

/*
option+鼠标,整列编辑
基础数据类型建议使用对象类,比如Integer,避免int默认=0对结构造成影响
 */
public class Brand {
    //id 主键
    private int id                      ;
   //品牌名称
    private String brand_name              ;
    //企业名称
    private String company_name            ;
    //排序字段
    private String ordered                 ;
   //描述信息
    private String description            ;
    //状态:0:禁用  1:启用
    private Integer status                  ;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getBrand_name() {
        return brand_name;
    }

    public void setBrand_name(String brand_name) {
        this.brand_name = brand_name;
    }

    public String getCompany_name() {
        return company_name;
    }

    public void setCompany_name(String company_name) {
        this.company_name = company_name;
    }

    public String getOrdered() {
        return ordered;
    }

    public void setOrdered(String ordered) {
        this.ordered = ordered;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Brand{" +
                "id=" + id +
                ", brand_name='" + brand_name + '\'' +
                ", company_name='" + company_name + '\'' +
                ", ordered='" + ordered + '\'' +
                ", description='" + description + '\'' +
                ", status=" + status +
                '}';
    }
}

-- 删除tb_brand表
drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
(
    -- id 主键
    id           int primary key auto_increment,
    -- 品牌名称
    brand_name   varchar(20),
    -- 企业名称
    company_name varchar(20),
    -- 排序字段
    ordered      int,
    -- 描述信息
    description  varchar(100),
    -- 状态:0:禁用  1:启用
    status       int
);
-- 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
       ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
       ('小米', '小米科技有限公司', 50, 'are you ok', 1);


SELECT * FROM tb_brand;

查询:对所有数据进行查询

/*
       查询所有
       1、SQL:select * from tb_brand
       2、参数:不需要
       3、结果:List
        */
public class BrandTest查询所有数据 {
    public static void main(String[] args) throws Exception {
        //1.获取Connection
        //2、加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
        //3、获取连接池对象
        DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);

        //4、获取数据库连接Connection
        Connection conn=dataSource.getConnection();

        //5、定义sql语句
        String sql="select * from tb_brand";

        //6、获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
        //pstmt.setString(1,"String");
        
        //7、执行sql
        ResultSet rs = pstmt.executeQuery();

        ArrayList brands=new ArrayList<>();
        //8、获取数据,并且封装数据成Brand对象,放到集合中
        while (rs.next()){
            int id = rs.getInt("id");
            String brand_name = rs.getString("brand_name");
            String company_name = rs.getString("company_name");
            String ordered = rs.getString("ordered");
            String description = rs.getString("description");
            int status = rs.getInt("status");
            Brand brand=new Brand();//创建一个brand对象
            brand.setId(id);
            brand.setBrand_name(brand_name);
            brand.setCompany_name(company_name);
            brand.setOrdered(ordered);
            brand.setDescription(description);
            brand.setStatus(status);

            //装载集合
            brands.add(brand);
        }
        System.out.println(brands);
        //释放资源
        rs.close();
        pstmt.close();
        conn.close();
    }
}

 数据库连接池之Druid_第3张图片

在添加数据的时候,id我们需要让数据库自动添加,只有其他的信息是用户可以手动添加的。 

public class BrandTest添加数据 {
    public static void main(String[] args) throws Exception {
//1.获取Connection
        //2、加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
        //3、获取连接池对象
        DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);

        //4、获取数据库连接Connection
        Connection conn=dataSource.getConnection();

        //5、定义sql语句
        String sql="insert into tb_brand(brand_name,company_name,ordered,description,status) values (?,?,?,?,?)";

        //6、获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
        String brand_name="想飘飘";
        String company_name="飘飘";
        int order=1;
        String description="好喝不贵";
        int status=1;

        pstmt.setString(1,brand_name);
        pstmt.setString(2,company_name);
        pstmt.setInt(3,order);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);
        //7、执行sql
        int count = pstmt.executeUpdate();
        System.out.println(count>0);

        pstmt.close();
        conn.close();
    }
}

 数据库连接池之Druid_第4张图片

根据id进行数据的修改 

public class BrandTest根据id进行修改 {
    public static void main(String[] args) throws Exception {
        //1.获取Connection
        //2、加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
        //3、获取连接池对象
        DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);

        //4、获取数据库连接Connection
        Connection conn=dataSource.getConnection();

        //5、定义sql语句
        String sql="update tb_brand set " +
                "brand_name=?   ," +
                "company_name=? ," +
                "ordered=?  ," +
                "description=?  ," +
                "status=?   " +
                " "+
                "where id=?";
        //6、获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        String brand_name="想飘飘";
        String company_name="飘飘";
        int order=1000;
        String description="好喝不贵,卖的不错";
        int status=1;
        int id=3;

        pstmt.setString(1,brand_name);
        pstmt.setString(2,company_name);
        pstmt.setInt(3,order);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);
        pstmt.setInt(6,id);

        //7、执行sql
        int count = pstmt.executeUpdate();
        System.out.println(count>0);

        pstmt.close();
        conn.close();
    }
}

数据库连接池之Druid_第5张图片

 根据id进行数据的删除

public class BrandTest删除数据 {
    public static void main(String[] args) throws Exception {
        //1.获取Connection
        //2、加载配置文件
        Properties prop=new Properties();
        prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
        //3、获取连接池对象
        DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);

        //4、获取数据库连接Connection
        Connection conn=dataSource.getConnection();

        //5、定义sql语句
        String sql="delete from tb_brand where id=?";

        //6、获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
        int id=5;
        pstmt.setInt(1,id);
        //7、执行sql
        int count = pstmt.executeUpdate();
        System.out.println(count>0);

        pstmt.close();
        conn.close();
    }
}

你可能感兴趣的:(JavaWeb,数据库,mysql,spring)