Druid连接池的使用以及封装CURD方法

使用德鲁伊连接池之前需要三个jar包
在这里插入图片描述
链接: https://pan.baidu.com/s/1iVMoSvpDKZ6qOrWIfCv_PA 提取码: z5hx 复制这段内容后打开百度网盘手机App,操作更方便哦

配置文件db.properties

druid.url=jdbc:mysql://localhost:3306/ttt
druid.username=root
druid.password=root
druid.driverClassName=com.mysql.jdbc.Driver
druid.maxActive=20

工具类DbUtils.java

package utils;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * @Author hasee
 * @Date 2019/11/14
 */
public class DbUtils {
    private static DataSource dataSource;

    private static Properties config = new Properties();


    static {
        initConfig();
    }


    public static void initConfig() {
        try {
            config.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));

        } catch (IOException e) {
            System.out.println("读取配置文档失败");
        }


    }

    public static synchronized DataSource getDataSource() {
        if (dataSource == null) {
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.configFromPropety(config);
            dataSource = druidDataSource;

        }


        return dataSource;
    }



    //更新操作
    public static void update(String sql, Object... args) {
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        try {
            queryRunner.update(sql, args);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    //插入并返回最新插入的主键
    public static int insert(String sql, Object... args) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(getDataSource());


        Object o = queryRunner.insert(sql, new ScalarHandler<>(), args);
        Long id = Long.parseLong(o.toString());


        return id.intValue();


    }

    //查询单行数据并返回t的对象
    public static <T> T selectOne2Bean(String sql, Class<T> cls, Object... args) {
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        T t = null;
        try {
            t = queryRunner.query(sql, new BeanHandler<>(cls), args);

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return t;

    }
    //返回对象的集合
    public static <T> List<T> select2Beans(String sql, Class<T> cls, Object... args) {
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        List<T> list = null;
        try {
            list = queryRunner.query(sql, new BeanListHandler<>(cls), args);

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return list;

    }
    //返回一个Map
    public static Map<String, Object> selectone2Map(String sql, Object... args) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        return queryRunner.query(sql, new MapHandler(), args);


    }
    //返回一个Map的集合List
    public static List<Map<String, Object>> select2Maps(String sql, Object... args) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(getDataSource());

        return queryRunner.query(sql, new MapListHandler(), args);
    }


}

测试类 Test.java

import utils.DbUtils;

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

/**
 * @Description
 * @Author hasee
 * @Date 2019/11/16
 */
public class Test {
    public static void main(String[] args) throws SQLException {
        //查询所有
        List<Map<String, Object>> articles = DbUtils.select2Maps("select * from article");
        for (Map<String, Object> article : articles) {
            for (String s : article.keySet()) {
                System.out.print(s + "\t" + article.get(s) + "\t");

            }
            System.out.println();

        }
        System.out.println("-----------------------分割线-----------------------");

        //查询单行
        Map<String, Object> article = DbUtils.selectone2Map("select * from article where id = ?", 3);
        for (String s : article.keySet()) {
            System.out.println(s + "\t" + article.get(s));

        }
        System.out.println("-----------------------分割线-----------------------");


        //查询单行并封装一个article对象
        Article article1 = DbUtils.selectOne2Bean("select * from article where id = ?", Article.class, 3);
        System.out.println(article1);
        
        
        System.out.println("-----------------------分割线-----------------------");
        //查询所有
        List<Article> articles1 = DbUtils.select2Beans("select * from article", Article.class);
        for (Article article2 : articles1) {
            System.out.println(article2);

        }


    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Druid是一个高性能的数据库连接池,提供了许多优秀的特性,如连接池监控、SQL监控、防SQL注入、自动识别驱动等。 使用Druid连接池需要以下步骤: 1. 添加Maven依赖 ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> ``` 2. 配置数据源 ```java @Bean public DataSource dataSource() throws SQLException { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/test"); dataSource.setUsername("root"); dataSource.setPassword("root"); // 配置连接池参数 dataSource.setInitialSize(5); dataSource.setMinIdle(5); dataSource.setMaxActive(20); dataSource.setMaxWait(60000); dataSource.setTimeBetweenEvictionRunsMillis(60000); dataSource.setMinEvictableIdleTimeMillis(300000); dataSource.setValidationQuery("SELECT 1 FROM DUAL"); dataSource.setTestWhileIdle(true); dataSource.setTestOnBorrow(false); dataSource.setTestOnReturn(false); dataSource.setPoolPreparedStatements(true); dataSource.setMaxPoolPreparedStatementPerConnectionSize(20); dataSource.setFilters("stat,wall,log4j"); return dataSource; } ``` 3. 获取连接 ```java @Autowired private DataSource dataSource; public void test() throws SQLException { Connection conn = dataSource.getConnection(); // 执行SQL语句 // ... conn.close(); } ``` 4. 监控 Druid提供了Web监控界面,可以方便地查看连接池的状态、SQL执行情况等。只需要在配置文件中添加以下代码: ```properties # 配置监控 # 访问地址:http://localhost:8080/druid/index.html # 用户名密码:admin/admin spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin ``` 以上就是使用Druid连接池的基本步骤,根据需要可以自行调整配置参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值