第三节——数据库连接池与JDBC Template

数据库连接池

一、Druid的使用步骤

  1. 导入jar包 druid-1.0.9.jar,jar包下载地址:下载地址
  2. 定义配置文件:
    * 是properties形式的
    * 可以叫任意名称,可以放在任意目录下,需要手动加载
  3. 加载配置文件。Properties
  4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
  5. 获取连接:getConnection

二、使用方法

  1. 导入jar包
    在这里插入图片描述

  2. 将druid.properties复制到src目录下
    在这里插入图片描述

  3. 修改druid.properties里面值
    在这里插入图片描述

  4. 获取连接

// 加载配置文件
Properties pro = new Properties();
//pro.load(new FileReader("C:\\tsb\\tool\\java\\jar\\druid-1.0.9\\druid.properties"));
InputStream is = Main.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
System.out.println(pro);
// 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);
// 获取连接
Connection con = dataSource.getConnection();
System.out.println(con);

三、简化方法,制作JDBCUtils类

  1. 定义一个类 JDBCUtils
  2. 提供静态代码块加载配置文件,初始化连接池对象
  3. 提供方法
    * 获取连接方法:通过数据库连接池获取连接
    * 释放资源
    * 获取连接池的方法
 public class Utils {
    
    
    private static DataSource ds;

    static {
    
    
        Properties pro = new Properties();
        try {
    
    
            pro.load(new FileReader("C:\\tsb\\tool\\java\\jar\\druid-1.0.9\\druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }

    // 获取连接
    public static Connection getConnection() throws SQLException {
    
    
        return ds.getConnection();
    }

    // 释放资源
    public static void close(Statement s,Connection c) throws SQLException {
    
    
        s.close();
        c.close();
    }

    public static void close(ResultSet r, Statement s, Connection c) throws SQLException {
    
    
        r.close();
        s.close();
        c.close();
    }

    // 获取连接池
    public static DataSource getDataSource(){
    
    
        return ds;
    }
}

四、工具类的使用

Connection con = Utils.getConnection();
Statement statement = con.createStatement();
String sql = "select * from ttable";
ResultSet result = statement.executeQuery(sql);

result.next();  //光标先next到第二行才能获取数据,默认第一行是列的名称
int i = result.getInt(1);  //获取第一行第一列的数据
String name = result.getString("name");  //获取第一行中name列的数据
System.out.println(i+":"+name);

Utils.close(statement,con);

JDBC Template

一、使用步骤

  1. 导入jar包,下载地址
  2. 创建JdbcTemplate对象。依赖于数据源DataSource
    * JdbcTemplate template = new JdbcTemplate(ds);
  3. 调用JdbcTemplate的方法来完成CRUD的操作
    * update():执行DML语句。增、删、改语句
    * queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合,注意:这个方法查询的结果集长度只能是1
    * queryForList():查询结果将结果集封装为list集合,注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    * query():查询结果,将结果封装为JavaBean对象
    * query的参数:RowMapper,一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
    * new BeanPropertyRowMapper<类型>(类型.class)
    * queryForObject:查询结果,将结果封装为对象,一般用于聚合函数的查询

二、例子

  1. update
JdbcTemplate j = new JdbcTemplate(Utils.getDataSource());
String sql = "update ttable set name=?";
int i = j.update(sql, "asd");
System.out.println(i);
  1. queryForMap()
JdbcTemplate j = new JdbcTemplate(Utils.getDataSource());
String sql = "select * from ttable where id=1";
Map<String, Object> map = j.queryForMap(sql);
System.out.println(map);
  1. queryForList()
JdbcTemplate j = new JdbcTemplate(Utils.getDataSource());
String sql = "select * from ttable";
List<Map<String, Object>> list = j.queryForList(sql);
for (Map<String, Object> m:list){
    
    
	System.out.println(m);
}
  1. query()
//定义一个Test1类,里面的成员变量名称与类型要与表一致,且Test1类定义了get和set方法
public class Test1 {
    
    
    int id;
    String name;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    @Override
    public String toString() {
    
    
        return "Test1{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
//使用query方法
JdbcTemplate j = new JdbcTemplate(Utils.getDataSource());
String sql = "select * from ttable";
List<Test1> query = j.query(sql, new BeanPropertyRowMapper<Test1>(Test1.class));
System.out.println(query);

猜你喜欢

转载自blog.csdn.net/qq_37589805/article/details/119825161