DBCP-DBUtil

来源:互联网 发布:linux 查看服务器状态 编辑:程序博客网 时间:2024/06/16 18:55

DBCP-DBUtil


一、创建DBCP连接池

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

driverClassName=com.mysql.jdbc.Driverusername=rootpassword=123456url=jdbc:mysql://127.0.0.1:3306/long1?characterEncoding=UTF8maxActive=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、创建一个静态的datasourceprivate static DataSource ds;//2、在静态代码块中,给ds赋值static{//读取资源文件try{Properties p = new Properties();p.load(DbcpDataSource.class.getClassLoader().getResourceAsStream("dbcp.properties"));//在dbcp中有一个工厂类,读取一个资源文件,创建一个datasourceds = 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向数据库新增数据 */@Testpublic 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 修改数据库数据 * */@Testpublic 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 删除数据库数据 */@Testpublic 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对象,返回第一行数据 */@Testpublic 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对象,返回所有的数据 *  */@Testpublic void query2() throws SQLException{//1、申明QueryRunner对象执行SQL语句QueryRunner run5 = new QueryRunner(DbcpDataSource.getDataSource());//2、书写sql语句String sq5 = "select * from student";//3、查询sqlList<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--------------------------------------------");}}}}