在系统启动前初始化一个容器(集合),在容器中创建许多的数据库,每当有用户来访问,我们就拿出一个数据库来提供服务,服务完成后就将数据库归还到容器中。如果有一个数据库一直被占有且不被使用,有人在排队的话,会强制断开连接并且将数据库分配给有需要的人。
这样的好处可以使数据库资源重用,提高系统的响应速度,并且避免数据库连接遗漏。
/*
Druid数据库连接池演示
*/
public class DruidDemo {
public static void main(String[] args) throws Exception {
//1、倒入jar包
//2、定义配置文件
//3、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
//4、获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//5、获取数据库链接对象
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/bd1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# ³õʼ»¯Á¬½ÓÊýÁ¿
initialSize=5
# ×î´óÁ¬½ÓÊý
maxActive=10
# ×î´óµÈ´ýʱ¼ä
maxWait=3000
package com.XiangMu;
/*
option+鼠标,整列编辑
基础数据类型建议使用对象类,比如Integer,避免int默认=0对结构造成影响
*/
public class Brand {
//id 主键
private int id ;
//品牌名称
private String brand_name ;
//企业名称
private String company_name ;
//排序字段
private String ordered ;
//描述信息
private String description ;
//状态:0:禁用 1:启用
private Integer status ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBrand_name() {
return brand_name;
}
public void setBrand_name(String brand_name) {
this.brand_name = brand_name;
}
public String getCompany_name() {
return company_name;
}
public void setCompany_name(String company_name) {
this.company_name = company_name;
}
public String getOrdered() {
return ordered;
}
public void setOrdered(String ordered) {
this.ordered = ordered;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
@Override
public String toString() {
return "Brand{" +
"id=" + id +
", brand_name='" + brand_name + '\'' +
", company_name='" + company_name + '\'' +
", ordered='" + ordered + '\'' +
", description='" + description + '\'' +
", status=" + status +
'}';
}
}
-- 删除tb_brand表
drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
(
-- id 主键
id int primary key auto_increment,
-- 品牌名称
brand_name varchar(20),
-- 企业名称
company_name varchar(20),
-- 排序字段
ordered int,
-- 描述信息
description varchar(100),
-- 状态:0:禁用 1:启用
status int
);
-- 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
('小米', '小米科技有限公司', 50, 'are you ok', 1);
SELECT * FROM tb_brand;
查询:对所有数据进行查询
/*
查询所有
1、SQL:select * from tb_brand
2、参数:不需要
3、结果:List
*/
public class BrandTest查询所有数据 {
public static void main(String[] args) throws Exception {
//1.获取Connection
//2、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
//3、获取连接池对象
DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
//4、获取数据库连接Connection
Connection conn=dataSource.getConnection();
//5、定义sql语句
String sql="select * from tb_brand";
//6、获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
//pstmt.setString(1,"String");
//7、执行sql
ResultSet rs = pstmt.executeQuery();
ArrayList brands=new ArrayList<>();
//8、获取数据,并且封装数据成Brand对象,放到集合中
while (rs.next()){
int id = rs.getInt("id");
String brand_name = rs.getString("brand_name");
String company_name = rs.getString("company_name");
String ordered = rs.getString("ordered");
String description = rs.getString("description");
int status = rs.getInt("status");
Brand brand=new Brand();//创建一个brand对象
brand.setId(id);
brand.setBrand_name(brand_name);
brand.setCompany_name(company_name);
brand.setOrdered(ordered);
brand.setDescription(description);
brand.setStatus(status);
//装载集合
brands.add(brand);
}
System.out.println(brands);
//释放资源
rs.close();
pstmt.close();
conn.close();
}
}
在添加数据的时候,id我们需要让数据库自动添加,只有其他的信息是用户可以手动添加的。
public class BrandTest添加数据 {
public static void main(String[] args) throws Exception {
//1.获取Connection
//2、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
//3、获取连接池对象
DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
//4、获取数据库连接Connection
Connection conn=dataSource.getConnection();
//5、定义sql语句
String sql="insert into tb_brand(brand_name,company_name,ordered,description,status) values (?,?,?,?,?)";
//6、获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
String brand_name="想飘飘";
String company_name="飘飘";
int order=1;
String description="好喝不贵";
int status=1;
pstmt.setString(1,brand_name);
pstmt.setString(2,company_name);
pstmt.setInt(3,order);
pstmt.setString(4,description);
pstmt.setInt(5,status);
//7、执行sql
int count = pstmt.executeUpdate();
System.out.println(count>0);
pstmt.close();
conn.close();
}
}
根据id进行数据的修改
public class BrandTest根据id进行修改 {
public static void main(String[] args) throws Exception {
//1.获取Connection
//2、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
//3、获取连接池对象
DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
//4、获取数据库连接Connection
Connection conn=dataSource.getConnection();
//5、定义sql语句
String sql="update tb_brand set " +
"brand_name=? ," +
"company_name=? ," +
"ordered=? ," +
"description=? ," +
"status=? " +
" "+
"where id=?";
//6、获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
String brand_name="想飘飘";
String company_name="飘飘";
int order=1000;
String description="好喝不贵,卖的不错";
int status=1;
int id=3;
pstmt.setString(1,brand_name);
pstmt.setString(2,company_name);
pstmt.setInt(3,order);
pstmt.setString(4,description);
pstmt.setInt(5,status);
pstmt.setInt(6,id);
//7、执行sql
int count = pstmt.executeUpdate();
System.out.println(count>0);
pstmt.close();
conn.close();
}
}
根据id进行数据的删除
public class BrandTest删除数据 {
public static void main(String[] args) throws Exception {
//1.获取Connection
//2、加载配置文件
Properties prop=new Properties();
prop.load(new FileInputStream("/Users/XXX/IdeaProjects/jdbc_demo/src/druid.properties"));
//3、获取连接池对象
DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
//4、获取数据库连接Connection
Connection conn=dataSource.getConnection();
//5、定义sql语句
String sql="delete from tb_brand where id=?";
//6、获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//6.1、设置参数->如果是PreparedStatem,"?"需要参数来替代
int id=5;
pstmt.setInt(1,id);
//7、执行sql
int count = pstmt.executeUpdate();
System.out.println(count>0);
pstmt.close();
conn.close();
}
}