JDBC连接池和JDBCTemplate的基本使用

本文详细介绍了JDBC连接池如C3P0和Druid的使用步骤,强调了连接池在提高数据库访问效率上的作用。同时,讲解了Spring框架中的JDBCTemplate如何简化JDBC开发,列举了常用的方法,如update、queryForMap、queryForList等,帮助开发者更好地理解和应用这些工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客内容是博客主学习时候的源代码
博客主的理解都在注释上

jar包链接

没有解决的问题
为什么JDBCTemplate的使用有时候需要用到类的对象(.class对象)

JDBCTemplate的使用必须掌握

理解连接池的用处,连接池是管理连接对象的,
我们之前使用JDBC每用一次,就要重新建立连接,
假如:连接消耗时长100毫秒,而执行sql语句才只用20毫秒,就很大的浪费了时间
所有就出现了连接池,当系统初始化好后,连接池就被创建,连接池中会申请一些连接对象,
当用户来访问数据库时,从连接池中获取连接对象,用户访问完之后,会将连接对象归还给连接池。

连接池C3P0的使用
1,导入jar包
2,将配置文件放到src下
3,创建连接池对象
4,获取连接
5,执行sql语句
6,释放连接,并不是真正的关闭,而是归还到连接池

public class JDBC_C3P0 {
   
   
    public static void main(String[] args){
   
   
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet re = null;
        PreparedStatement prep1 = null;
        try {
   
   
            //1,导入jar包
            //2,将配置文件放到src下
            //3,创建连接池对象
            ComboPooledDataSource cpds = new ComboPooledDataSource();
            //4,获取连接
            conn = cpds.getConnection();
            //开启事务
            conn.setAutoCommit(false);
            //获得连接后就可以进行sql语句的操作
            String sql = "insert into login values (null ,?,?)";

            String sql1 = "select * from login where username = ?";
            //获取执行sql语句的对象
            prep = conn.prepareStatement(sql);

            prep1 = conn.prepareStatement(sql1);
            //往?号中传参
            prep.setString(1,"ksaar");
            prep.setString(2,"ksaarboss");

            prep1.setString(1,"root");
            //执行sql语句
            int i = prep.executeUpdate();
            System.out.println("被影响的行数" + i);

            re = prep1.executeQuery();
            re.next();
            String password = re.getString("password");
            System.out.println("用户名为root的密码是:" + password);

            conn.commit();
        } catch (SQLException e) {
   
   
            e.printStackTrace();
            try {
   
   
                if (conn != null) {
   
   
                    conn.rollback();
                }
            } catch (SQLException e1) {
   
   
                e1.printStackTrace();
            }
        }finally {
   
   
            //5,释放连接,并不是真正的关闭,而是归还到连接池
            try {
   
   
                if (prep1 != null) {
   
   
                    prep1.close();
                }
            } catch (SQLException e) {
   
   
                e.printStackTrace();
            }
            try {
   
   
                if (re != null) {
   
   
                    re.close();
                }
            } catch (SQLException e) {
   
   
                e.printStackTrace();
            }
            try {
   
   
                if (prep !=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值