连接池

概述

用池来管理Connection,这样可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

需要导入jar包

%title插图%num

连接池常见的配置项

%title插图%num

工具类代码:JDBCUtils

package cn.hiluna.jdbcutils;

import org.apache.commons.dbcp.BasicDataSource;

import javax.sql.DataSource;

/**
 * 使用DBCP实现数据库的连接池
 * 连接池配置,自定义类,
 * 最基本四项完整
 * 对于数据库连接池里面的其他配置,自定义
 */
public class JDBCUtils {
    /**
     * 创建出BasicDataSource类对象
     */
    private static BasicDataSource dataSource = new BasicDataSource();
    //静态代码块,对BasicDataSource对象中的配置,自定义
    static {
        //数据库连接信息,必须的
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mybase?characterEncoding=utf8");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        //对连接池中的连接数量进行配置,可选的
        dataSource.setInitialSize(10);//初始化的连接数量
        dataSource.setMaxActive(8);//最大连接数量
        dataSource.setMinIdle(1);//最小空闲
        dataSource.setMaxIdle(5);//最大空闲
    }
    //定义静态方法,返回BasicDataSource类对象
    public static DataSource getDataSource(){
        return dataSource;
    }
}

测试代码:

package cn.hiluna.jdbcutils;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;

import java.sql.SQLException;
import java.util.List;

/**
 * 测试写好的工具类
 * 提供的是一个DataSource接口的数据源
 * QueryRunner类构造方法,接受DataSource接口的实现类
 * 后面,调用方法update,query,无需传递他们Connection连接对象
 */
public class test {
    //定义2个方法,实现数据表的添加,和数据表的查询
    //QueryRunner类的对象,写在类的成员位子
    private  static QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());

    public static void main(String[] args) {
        //insert();
        select();
    }
    //输查询
    public static void select(){
        String sql = "select * from sort";
        try {
            List<Object[]> list = queryRunner.query(sql,new ArrayListHandler());
            for (Object[] objects : list){
                for(Object object :objects){
                    System.out.print(object+"t");
                }
                System.out.println();
            }
        }catch (SQLException e){
            e.printStackTrace();
        }


    }
    //数据表的添加数据
    public static void insert() {
        String sql = "insert into sort(sname,sprice,sdesc)values(?,?,?)";
        Object[] params = {"水果","100.12","刚刚上市的核桃"};
        try {
            int row = queryRunner.update(sql,params);
            System.out.println(row);
        } catch (SQLException e) {
            e.printStackTrace();
            throw  new RuntimeException("数据添加失败");
        }
    }
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇