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

url=jdbc:mysql://localhost:3306/footclub?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8

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的开发

步骤:

  1. 导入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 update = template.queryForMap(sql,"145789");

System.out.println(update);

}

//查询所有对象,并封装成List集合

@Test

public void test5(){

String sql ="select*from user";

List> update = template.queryForList(sql);

System.out.println(update);

}

//获取javabean对象。需要引入BeanPropertyRowMapper(User.class)接口

@Test

public void test6(){

String sql ="select*from user";

List query = template.query(sql, new BeanPropertyRowMapper(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);

}

}

你可能感兴趣的:(Druid连接池的使用)