DBCP-DBUtil

举报
brucexiaogui 发表于 2021/12/30 00:40:06 2021/12/30
4.1k+ 0 0
【摘要】 DBCP-DBUtil 一、创建DBCP连接池 1、创建DBCP链接池配置文件:名称为 dbcp.properties      内容如下: driverClassName=com.mysql.jdbc.Driverusername=rootpassword=123456url=jdbc:my...

DBCP-DBUtil


一、创建DBCP连接池

1、创建DBCP链接池配置文件:名称为 dbcp.properties      内容如下:


      driverClassName=com.mysql.jdbc.Driver
      username=root
      password=123456
      url=jdbc:mysql://127.0.0.1:3306/long1?characterEncoding=UTF8
      maxActive=2
  
 

2、读取配置文件,创建 DataSource 连接池实例


      package com.test.dbcp;
      import java.sql.Connection;
      import java.util.Properties;
      import javax.sql.DataSource;
      import org.apache.commons.dbcp.BasicDataSourceFactory;
      public class DbcpDataSource {
     	/*
       * 重点:创建一个DataSource
       * 步骤为:1、用Properties类读取配置文件。
       * 2、通过工厂类,读取这个Properties类获取的配置文件,创建出DataSource
       * DataSource作用:
       * 创建DataSource可以返回多个连接。可以实现dbutil简化操作数据库的流程。
       */
     	//1、创建一个静态的datasource
     	private static DataSource ds;
     	//2、在静态代码块中,给ds赋值
     	static{
     		//读取资源文件
     		try{
     			Properties p = new Properties();
      			p.load(DbcpDataSource.class.getClassLoader().getResourceAsStream("dbcp.properties"));
     			//在dbcp中有一个工厂类,读取一个资源文件,创建一个datasource
      			ds = BasicDataSourceFactory.createDataSource(p);
      			System.out.println("创建DataSource为"+ds);
      		}catch(Exception e){
     			throw new RuntimeException(e);
      		}
      	}
     	//提供一个方法用于获取整个datasource对象
     	public static DataSource getDataSource(){
      		return ds;
      	}
     	//提供一个方法,获取connection连接
     	public static Connection getConnection(){
     		Connection con = null;
     		try{
      			con = ds.getConnection();
      			System.out.println("通过DataSource获取connection连接"+con);
      		}catch(Exception e){
      			e.printStackTrace();
      		}
     		return con;
      	}
      }
  
 


二、DBUtil 操作数据库实例


      package com.test.ts;
      import java.sql.SQLException;
      import java.util.List;
      import javax.persistence.Version;
      import org.apache.commons.dbutils.QueryRunner;
      import org.apache.commons.dbutils.handlers.ArrayHandler;
      import org.apache.commons.dbutils.handlers.ArrayListHandler;
      import org.junit.Test;
      import com.test.dbcp.DbcpDataSource;
      public class DbutilTests {
     	/*
       * dbutil向数据库新增数据
       */
     	@Test
     	public void add() throws SQLException{
     		//1、申明QueryRunner对象执行SQL语句
     		QueryRunner run1 = new QueryRunner(DbcpDataSource.getDataSource()); //申明对象,获取DataSource链接池
     		//2、书写SQL字符串语句
     		String sq1 = "INSERT INTO student(id,namee,sex,birth,department,address)"
      				+ "VALUES(3,'王思','男',1995,'英文系','山东沧州')";
     		//3、执行sql语句
     		int result1 = run1.update(sq1);
      		System.out.println("新增数据库结果,更新了数据有:"+result1+"条");
      	}
     	/*
       * dbutil 修改数据库数据
       *
       */
     	@Test
     	public void update() throws SQLException{
     		//1、申明QueryRunner对象执行SQL语句
     		QueryRunner run2 = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource连接池
     		//2、书写SQL字符串语句
     		String sq2 = "UPDATE student SET sex=? WHERE id=?";
     		//3、执行SQL语句
     		int result2 = run2.update(sq2, "男",16);
      		System.out.println("更新数据库结果,更新了数据有:"+result2+"条");
      	}
     	/*
       * dbutil 删除数据库数据
       */
     	@Test
     	public void delete() throws SQLException{
     		//1、申明QueryRunner对象执行SQL语句
     		QueryRunner run3 = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource连接池
     		//2、书写SQL字符串语句(这个sql语句的作用是每次删除ID号最大的数据)
     		String sq3 = "DELETE FROM student WHERE id IN "
      				+ "(SELECT a.id FROM "
      				+ "(SELECT MAX(id) id FROM student a WHERE id IN"
      				+ "(SELECT id FROM student b WHERE a.id=b.id ORDER BY id DESC)) a)";
     		//3、执行SQL语句
     		int result3 = run3.update(sq3);
      		System.out.println("更新数据库结果,更新了数据有:"+result3+"条");
      	}
     	/*
       * dbutil 查询,将结果封装成Object对象,返回第一行数据
       */
     	@Test
     	public void query() throws SQLException{
     		//1、申明QueryRunner对象执行SQL语句
     		QueryRunner run = new QueryRunner(DbcpDataSource.getDataSource());//申明对象,获取DataSource链接池
     		//2、查询
     		String sq4 = "Select * from student";
      		Object[] var = run.query(sq4, new ArrayHandler());
     		if(var !=null){
      			System.out.print("输出学生表查询的信息"+"\n");
     			for(Object o :var){
      				System.out.print(o+"\n");
      			}
      		}
      	}
     	/*
       * dbutil 查询 ,将结果封装成Object对象,返回所有的数据
       *
       */
     	@Test
     	public void query2() throws SQLException{
     		//1、申明QueryRunner对象执行SQL语句
     		QueryRunner run5 = new QueryRunner(DbcpDataSource.getDataSource());
     		//2、书写sql语句
     		String sq5 = "select * from student";
     		//3、查询sql
      		List<Object[]> list = run5.query(sq5, new ArrayListHandler());
     		//4、遍历结果
     		if(list!=null){
     			for(Object[] os:list){
     				for(Object o :os){
      					System.out.println("ArrayListHandler()显示查询到的所有数据:"+o+"\t");
      				}
      				System.out.println("\n--------------------------------------------");
      			}
      		}
      	}
      }
  
 


文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/78082718

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。