• DBCP连接池


    dbcp连接池

    需要的架包
    1.commons-dbcp.jar
    2.commons-pool.jar
    3.mysql-connector-java-5.0.8-bin.jar

    DBCP相关配置:DBCP configuration
    说明:
    defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true
    defaultReadOnly: 对于数据库是否只能读取, 默认值为 false
    driverClassName:连接数据库所用的 JDBC Driver Class,
    maxActive: 连接池的最大数据库连接数。设为0表示无限制,默认为8
    maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)
    minIdle:对象池中对象最小个数
    maxWait: 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息
    password: 登陆数据库所用的密码
    url: 连接数据库的 URL
    username: 登陆数据库所用的帐号
    validationQuery: 验证连接是否成功,该选项用来验证数据库连接的有效性, SQL SELECT 指令至少要返回一行
    removeAbandoned: 是否自我中断, 默认是 false
    removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned 必须为 true
    logAbandoned: 是否记录中断事件, 默认为 false
    minEvictableIdleTimeMillis:大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟
    timeBetweenEvictionRunsMillis:失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程,默认-1
    testOnBorrow:取得对象时是否进行验证,检查对象是否有效,默认为false
    testOnReturn:返回对象时是否进行验证,检查对象是否有效,默认为false
    testWhileIdle:空闲时是否进行验证,检查对象是否有效,默认为false
    initialSize:初始化线程数


    一。通过直接配置数据库属性连接
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    
    import org.apache.commons.dbcp.BasicDataSource;
    import org.apache.commons.dbcp.DataSourceConnectionFactory;
    class dbcputils {
    	private static dbcputils dbcp=null;
    	private BasicDataSource dbs=null;
    	private DataSourceConnectionFactory dscf=null;
    	public dbcputils(){
    		if(dbs==null){
    			dbs=new BasicDataSource();
    			dbs.setUsername("root");
    			dbs.setPassword("jarrem");
    			dbs.setUrl("jdbc:mysql://127.0.0.1:3306/tang");
    			dbs.setDriverClassName("com.mysql.jdbc.Driver");
    			dbs.setMaxActive(11);
    			dbs.setInitialSize(10);
    			dbs.setMaxIdle(5);
    			dbs.setMinIdle(3);
    			dscf=new DataSourceConnectionFactory(dbs);
    			System.out.println("初始化实例了");
    		}
    	}
    	public dbcputils getInstance(){
    		if(dbcp==null){  
    			dbcp=new dbcputils();  
    			System.out.println("getInstance初始化实例了");
    			}
    		return dbcp;
    	}
    	public Connection getConnection(){
    		Connection connection=null;
    				try {
    				connection = dscf.createConnection();
    				} catch (SQLException e) {
    					// TODO Auto-generated catch block
    					System.out.println("获取Connection失败!");
    					e.printStackTrace();
    				}
    		return connection;
    		}
    	public static void main(String[] args){
    	 dbcputils dp=new dbcputils();
    	 long begin=System.currentTimeMillis();
    	 			List list=new ArrayList();
    		 		Connection connection = dp.getInstance().getConnection();
    		 		try {
    					PreparedStatement ps = connection.prepareStatement("select * from user;");
    					ResultSet result = ps.executeQuery();
    					while(result.next()){
    						list.add(result);
    						System.out.println(result.getString(1));
    					}
    					for(Object o:list){
    						System.out.println(list.toString());
    					}
    					connection.close();
    				} catch (SQLException e1) {
    					e1.printStackTrace();
    				}
    	 
    	long end=System.currentTimeMillis();
    	System.out.println(end-begin);
    	}
    }
    


    二.通过properties文件配置数据库
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.sql.DataSource;
    import org.apache.commons.dbcp.BasicDataSource;
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    import org.apache.commons.dbcp.DataSourceConnectionFactory;
    public class dbcpPool {
    	private BasicDataSource bds=null;
    	private DataSourceConnectionFactory dscf=null;
    	private Properties properties=null;
    	private DataSource DataSource=null;
    	private static Connection connection=null;
    	public dbcpPool(){
    		if(bds==null){
    			bds=new BasicDataSource();
    			properties=new Properties();
    			FileInputStream in;
    			try {
    				//我这里使用的是绝对路径,根据自己文件位置修改
    				in = new FileInputStream("C:\Users\lenovo\Workspaces\MyEclipse Professional 2014\DatabaseConnectionPool\src\com\tang\dbpcPool2\link.properties");
    				properties.load(in);
    					DataSource = BasicDataSourceFactory.createDataSource(properties);
    					connection = DataSource.getConnection();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			
    		}
    	}
    	public static void main(String args[]){
    		try {
    			new dbcpPool();
    			PreparedStatement statement = connection.prepareStatement("select * from user;");
    			ResultSet result = statement.executeQuery();
    			while(result.next()){
    				System.out.println(result.getString(1)+"    "+result.getString(2));
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    


  • 相关阅读:
    MyBatis学习(五)resultMap测试
    MyBatis学习(四)XML配置文件之SQL映射的XML文件
    Mybatis学习(三)XML配置文件之mybatis-config.xml
    每次回顾,总会有一点小收获!
    php数组去重、魔术方法、redis常用数据结构及应用场景
    MySQL使用可重复读作为默认隔离级别的原因
    后端程序猿标配之linux命令
    常用字符串函数
    nginx配置隐藏index.php
    MySQL的sql_mode解析与设置
  • 原文地址:https://www.cnblogs.com/jarrem/p/5910825.html
Copyright © 2020-2023  润新知