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)