DBCP-DBUtil
【摘要】
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)