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);

        }


    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值