jdbc(3)

1.抽象一个dao的父类。
根据我们之前操作数据库表时,封装了很多的dao类,这些dao类他们具有很多相同的代码。
如果我们反复写这些重复的代码 相对比较麻烦。 我们学过继承,是否可以把这些dao类的
公共代码抽取到父类中,然后子类继承该父类。

public class BaseDao {
    protected PreparedStatement ps = null;
    protected Connection conn = null;
    protected ResultSet rs = null;
    //2. 获取连接对象
    private String url = "jdbc:mysql://localhost:3306/qy174";
    private String user = "root";
    private String password = "root";
    //加载驱动---静态代码块--随着类的加载而被加载到内存中,而且只会加载一次。
    static{
        //1. 加载驱动
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    //获取连接对象
    public void getConn() throws Exception{
        conn = DriverManager.getConnection(url, user, password);
    }
    //通用增删改方法
 public int edit(String sql,Object... params){//Object表示可以接受任意类型的参数  ...:表示可以接受任意个参数

        try {
            getConn();
            //3. 获取执行sql语句的对象。PreparedStatement
            ps = conn.prepareStatement(sql);
            //4. 为占位符赋值
            for (int i = 0; i < params.length; i++) {
                ps.setObject(i+1,params[i]);
            }
            //5.执行sql.
            int i = ps.executeUpdate();
            return i;
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            closeAll();
        }
    }

    //关闭资源
    public void closeAll(){
        try {
            if(rs!=null){
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

抽取到BaseDao父类中,让子类继承。
2.引入数据库连接池
连接池: 它就是一个池子,存放的是连接对象。
为什么使用连接池?
我们在获取连接对象时,发现时间有点长。而且用完后需要关闭连接对象。 连接池中预先存放若干个连接对象,当需要连接对象时,直接从连接池中拿去即可。而且使用完毕后,归还到连接池中就行。
连接池的种类:

如何使用连接池
[1] 引入连接池的依赖jar

[2]创建数据源的属性配置文件。db.properties

# 写上数据库配置信息 key=value  这里的key必须固定
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/qy174
username=root
password=root
initialSize=5
maxActive=10

[3]编写代码

posted on 2024-12-07 14:39  小木不痞  阅读(9)  评论(0)    收藏  举报

导航