Luo Hao

Java数据库(1)基本概念和try-with-resources

rehoni / 2020-06-20


1. 连接池

连接池创建好固定数量的连接,数据库操作通过借用连接池的连接来进行操作,并且不关闭而是返还给连接池。

2. try-with-resources

实现autoClosable接口的类,均可以进行try-with-resources的操作。

close的顺序是,先进后出,类似堆栈。

    try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root", "admin");
        Statement s = c.createStatement();) {
 
        String sql = "select * from hero where id = " + id;
   
        ResultSet rs = s.executeQuery(sql);
   
        // 因为id是唯一的,ResultSet最多只能有一条记录
        // 所以使用if代替while
        if (rs.next()) {
            hero = new Hero();
            String name = rs.getString(2);
            float hp = rs.getFloat("hp");
            int damage = rs.getInt(4);
            hero.name = name;
            hero.hp = hp;
            hero.damage = damage;
            hero.id = id;
        }
   
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

3. ORM

ORM=Object Relationship Database Mapping

对象和关系数据库的映射

简单说,一个对象,对应数据库里的一条记录

4. DAO

DAO=DataAccess Object

数据访问对象

实际上就是运用了练习-ORM中的思路,把数据库相关的操作都封装在这个类里面,其他地方看不到JDBC的代码。通过设计类实现DAO接口,来完成对特定类的CRUD操作。

  1. 把驱动的初始化放在了构造方法里
  2. 提供getConnection方法返回连接
package jdbc;
 
import java.util.List;

import charactor.Hero;
 
public interface DAO{
    //增加
    public void add(Hero hero);
    //修改
    public void update(Hero hero);
    //删除
    public void delete(int id);
    //获取
    public Hero get(int id);
    //查询
    public List<Hero> list();
    //分页查询
    public List<Hero> list(int start, int count);
}

以上部分参考自how2java:https://how2j.cn/k/jdbc/jdbc-connection-pool/610.html