Java学习笔记50(DBCP连接池)
2018-06-18 03:44:11来源:未知 阅读 ()
实际开发中,连接数据库是十分消耗资源的操作,但是,我们又需要频繁地连接数据库
这时候,为了提高效率,这里就会采用连接池技术:
连接池地通俗理解:
一个池里面放入很多的连接,需要哪一个取出来用即可,用完放回去,而不是关闭连接
这里使用到四个jar包
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
mysql-connector-java-5.1.37-bin.jar
commons-dbutils-1.6.jar
DataSource接口:连接池的规范接口
BasicDataSource类:导入的jar包中的实现类
连接池连接数据库的方法与配置:
package demo; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; public class DataSourceDemo { public static void main(String[] args) { BasicDataSource dataSource = new BasicDataSource(); // 常规基本配置 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybase"); dataSource.setUsername("root"); dataSource.setPassword("xuyiqing"); // 连接池配置 dataSource.setMaxActive(10);// 最大连接数 dataSource.setMaxIdle(5);// 最大空闲连接 dataSource.setMinIdle(2);// 最小空闲连接 dataSource.setInitialSize(5);// 初始化连接 try { Connection con = dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); throw new RuntimeException("数据库连接失败"); } } }
接下来创建一个连接池的工具类,用于方便开发:
数据准备:创建表:
CREATE TABLE sort( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(100), sprice DOUBLE, sdesc VARCHAR(5000) );
工具类:
package demo; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; public class JDBCUtils { private static BasicDataSource dataSource = new BasicDataSource(); static { dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybase"); dataSource.setUsername("root"); dataSource.setPassword("xuyiqing"); dataSource.setInitialSize(10); dataSource.setMaxActive(8); dataSource.setMaxIdle(5); dataSource.setMinIdle(1); } public static DataSource getDataSource() { return dataSource; } }
测试:
package demo; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayListHandler; public class QueryRunnerDemo { private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); public static void main(String[] args) { insert(); } public static void insert() { String sql = "INSERT INTO sort (sname,sprice,sdesc)VALUES(?,?,?)"; Object[] params = { "水果", 20, "促销" }; try { qr.update(sql, params); } catch (SQLException ex) { throw new RuntimeException("数据添加失败"); } } public static void select() { String sql = "SELECT * FROM sort"; try { List<Object[]> list = qr.query(sql, new ArrayListHandler()); for (Object[] objs : list) { for (Object obj : objs) { System.out.println(obj + "\t"); } } } catch (SQLException ex) { throw new RuntimeException("数据添加失败"); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Topics
下一篇:细思极恐-你真的会写java吗?
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash