Druid连接池的使用
druid
步骤:
1.导入jar包druid-1.0.9.jar
2.定义配置文件:是properties形式的,可以叫任意名称,可以放在任意目录下
3.获取数据库连接池对象:通过工厂来来获取DruidDataSourceFactory
4. 获取连接: getConnection
使用
public static void main(String[] args) throws Exception {
//1.导入jar包
//2.定义配置文件
//3.加载配置文件
Properties pro = new Properties();
InputStream resourceAsStream = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(resourceAsStream);
//4.获取链接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5.获取链接
Connection con = ds.getConnection();
System.out.println(con);
}
配置文件
driverClassName=com.mysql.jdbc.Driver
username=root
password=121156
initialSize=5
maxActive=10
maxWait=3000
相关位置
[图片上传失败...(image-762f31-1595743740411)]
定义工具类
1.定义一个类JDBCUtils
2.提供静态代码块加载配置文件,初始化连接池对象
3.提供方法
1.获取连接方法:通过数据库连接池获取连接
2.释放资源
3.获取连接池的方法
记得写配置文件
package web.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;
public class JDBCUtils {
//1.定义成员变量 DateSource
private static DataSource ds;
static {
try {
//1.加载配置文件
Properties pro = new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws Exception{
return ds.getConnection();
}
//获取链接池的方法
public static DataSource getDataSource(){
return ds;
}
//关闭数据库连接的封装,通过动态传参,将rs,pstmt,con按照顺序传进来
public static void closeAll(AutoCloseable...closeables) {
for(AutoCloseable closeable:closeables) {
if(closeable!=null) {
try {
closeable.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
增加操作
public static void main(String[] args) {
Connection con = null;
PreparedStatement pstmt = null;
try {
con=JDBCUtils.getConnection();
String sql = "insert into user values(?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1,"123456");
pstmt.setString(2,"张三");
pstmt.setInt(3,0);
pstmt.setString(4,"2012-12-22");
pstmt.setString(5,"333");
pstmt.setString(6,"333");
int i = pstmt.executeUpdate();
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
JDBCTemplate
Spring JDBC :Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
步骤:
- 导入jar包
[图片上传失败...(image-556440-1595743740410)]
2.创建JdbcTemplate对象。 依赖于数据源DataSource JdbcTemplate template = new JdbcTemplate(ds);
3.调用JdbcTemplate的方 法来完成CRUD的操作
l update():执行DML语句。增、删、改语句
l queryForMap():查询结果将结果集封装为map集合
¡ 查询结果集的长度只能为1(一条记录) 列名为key,值为value
¡ 查询两条或者两条以上的记录时,使用List集合
l queryForlist():查询结果将结果集封装为list集合
l query():查询结果,T导结果封装为JavaBean对象
¡ 需要引入接口BeanPropertyRowMapper<类>(类.class)接口
l queryForobject(sql,返回值结果的类型.class) :查询结果,将结果封装为对象
¡ 一半用于执行聚合函数
简单使用
public static void main(String[] args) {
//1.导入jar包
//2.创建JDBCTemplate对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//3.调用方法
String sql ="update user set gender=? where idcard=?";
int update = template.update(sql, 1,"123456");
System.out.println(update);//1
}
相关练习
需求:
1.修改123456号数据的性别为0()
2.添加一条记录
3.删除刚才添加的记录
4.查询id为145789的记录,将其封装为Map集合
5.查询所有记录,将其封装为List
6.查询所有记录,将其封装为Emp对象的List集合
7.查询总记录数
public class JdbcTemplateDemo2 {
/**
*/
//1.获取对象
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//修改
@Test
public void test1(){
//2.定义sql
String sql ="update user set gender=? where idcard=?";
//3.调用方法
int update = template.update(sql, 0,"123456");
System.out.println(update);//1
}
//添加
@Test
public void test2(){
String sql ="insert into user value(?,?,?,?,?,?)";
int update = template.update(sql,"777558","路费",1,"2012-12-22","789","111");
System.out.println(update);
}
//删除
@Test
public void test3(){
String sql ="delete from user where idcard=?";
int update = template.update(sql,"123456");
System.out.println(update);
}
//查询所有对象,并封装成map集合
//注意:查询结果集的长度只能为1 列名为key,值为value
//查询两条或者两条以上的记录时,使用List集合
@Test
public void test4(){
String sql ="select*from user where idcard=?";
Map<String, Object> update = template.queryForMap(sql,"145789");
System.out.println(update);
}
//查询所有对象,并封装成List集合
@Test
public void test5(){
String sql ="select*from user";
List<Map<String, Object>> update = template.queryForList(sql);
System.out.println(update);
}
//获取javabean对象。需要引入BeanPropertyRowMapper<User>(User.class)接口
@Test
public void test6(){
String sql ="select*from user";
List<User> query = template.query(sql, new BeanPropertyRowMapper<User>(User.class));
for (User use:query) {
System.out.println(use);
}
}
//获取值的长度
@Test
public void test7(){
String sql ="select count(*) from user";
Long longs = template.queryForObject(sql,Long.class);
System.out.println(longs);
}
}