【java】druid and jdbctemplate


前言

本博文主要是对java中druid and jdbctemplate的一个介绍,以及记录,方便后续使用时候可以直接加载。

druid and jdbctemplate介绍

Druid和JdbcTemplate是Java中常用的数据库访问工具。

  • Druid是阿里巴巴开源的数据库连接池库,它提供了强大的监控和扩展功能,能够有效地管理和优化数据库连接。Druid支持各种常见的数据库,如MySQL、Oracle、PostgreSQL等,并且能够自动识别并适配各种数据库。

  • JdbcTemplate是Spring框架中的一个核心类,它提供了简单而强大的数据库访问功能。通过JdbcTemplate,我们可以方便地执行SQL语句,查询数据库并获取结果,以及执行数据库的更新操作。JdbcTemplate封装了JDBC的底层细节,提供了一种更简洁、更易用的方式来访问数据库。

在使用Druid和JdbcTemplate时,首先需要配置数据库连接信息,并创建对应的数据源。然后可以使用JdbcTemplate来执行各种数据库操作,如查询、插入、更新等。Druid提供了监控和统计功能,可以通过配置来开启,以便更好地了解数据库连接池的使用情况和性能状况。

总的来说,Druid和JdbcTemplate是Java中常用的数据库访问工具,它们提供了方便、高效、安全的数据库访问方式,使开发人员在使用数据库时更加简单和可靠。

示例介绍

在这里插入图片描述

druid.properties


driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/qc?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false
username=root
password=
#初始化连接数
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000


JDBCUtils

package util;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.sun.xml.internal.bind.v2.model.core.ID;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * Druid连接池的工具类
 */

public class JDBCUtils {

    //1.定义成员变量DataSource
    private static DataSource ds;

    static {
        try {
            //1.加载配置文件
            Properties pro=new Properties();
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //2.获取DataSource
            ds= DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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

    /**
     * 释放资源
     */
    public static void close(Statement stmt,Connection conn)  {
        close(null,stmt,conn);
//        if (stmt!=null){
//            try {
//                stmt.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
//
//        if (conn!=null){
//            try {
//                conn.close();//归还连接
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }

    }

    public static void close(ResultSet rs,Statement stmt, Connection conn)  {
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn!=null){
            try {
                conn.close();//归还连接
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

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

jdbcTemplateDemo

import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JDBCUtils;
import util.TimeUtil;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo {
    private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());

    //junit单元测试,可以让方法独立执行
    @Test
    public  void jdbcTemplateDemo(){
        for (int i=0;i<4;i++){
            System.out.println("begin2"+ TimeUtil.todayMsUtil());
            //1.创建jdbctemplate对象

            //String sql="UPDATE `test_sht3` SET `num` = 9 WHERE `id`=3";
            //String sql="INSERT INTO `test_sht`( `data5`, `deal_num`) VALUES( 88,56 )";
            String sql="DELETE FROM `test_sht16` WHERE `id`=5";
            //2.调用方法
            int count=template.update(sql);
            System.out.println(count);
            System.out.println("close"+TimeUtil.todayMsUtil());
        }

    }

    @Test
    public  void jdbcTemplateDemo1(){

        /**
         * queryforMap:--Map<String,object>
         * 查询结果将结果集封装为map集合,将列名作为key,将值作为value,将这条记录封装为map集合,
         *      注意,这个方法查询的结果集合长度只能是1
         * queryforlist:--List<Map<String,object>>
         * 查询所有的结果集封装为list集合
         * query:
         * 查询所有记录,将其封装为bean对象的list集合
         *      query的参数:rowmapper
         *      一般我们使用beanpropertyrowmapper实现类,可以完成数据到javabean的自动封装
         *      new beanpropertyrowmapper<类型>(类型.class)
         * queryforobject:
         * 查询结果,将结果封装为对象
         *          一般用于聚合函数的查询
         *
         */
        for (int j=0;j<4;j++){
            System.out.println("begin2"+ TimeUtil.todayMsUtil());
            //1.创建jdbctemplate对象

            String sql="SELECT `id`, `numberss` FROM `test_sht16` WHERE 1";
            //2.调用方法
            List<Map<String,Object>> list=template.queryForList(sql);
            for (Map<String,Object> stringObjectMap:list){
                if (stringObjectMap.get("numberss")==null){
                    System.out.println(stringObjectMap);
                }
                if (stringObjectMap.get("id").toString().equals("4")){
                    System.out.println("string come");
                }
                if (stringObjectMap.get("numberss")!=null && stringObjectMap.get("numberss").toString().equals("2")){
                    System.out.println("int come");
                }

            }
            System.out.println("close"+TimeUtil.todayMsUtil());
        }

    }
}

具体学习链接参考

黑马系列九之JDBC入门至精通(c3p0/druid/)

druid和jdbctemplate的jar包

链接:https://pan.baidu.com/s/1JbHIzXw51QU4B6blXEqj2w
提取码:mnfa

druid多连接池操作

Druid连接池实现自定义场景的多数据库的连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻傻虎虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值