个人笔记——Druid数据库连接池通用方法以及Utils

 

仅供个人回顾使用

 


/**
 * @Outhor : janliujc
 * @Data 2018年09月06日
 */
public class BaseDao {

    //QueryRunner:封装了增删改的方法
    private QueryRunner runner = new QueryRunner();

    /**
     *     1.增删改方法·
     */

    public int update(String sql, Object...params){
        int num = 0;
        //获取数据库连接
        Connection conn = JDBCUtilsTwo.getConnection();

        try {
            num = runner.update(conn, sql, params);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtilsTwo.closeConnection(conn);
        }
        return num;
    }

    /**
     * 查询一条记录,封装给一个对象
     */
    public <T>T getBean(Class type,String sql,Object...params){

        //获取数据库连接
        Connection conn = JDBCUtilsTwo.getConnection();

        T t = null;
        try {
            //查询,handler结果集,参数返回保存到结果集
            t = runner.query(sql,new BeanHandler<T>(type),params);

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtilsTwo.closeConnection(conn);
        }
        return t;
    }
    /**
     * 查询多条记录,封装给对象的集合
     */
    public <T> List<T> getBeanList(Class type,String sql,Object...params){
        //获取数据库连接
        Connection conn = JDBCUtilsTwo.getConnection();

    List<T> list = null;
        try {
        list = runner.query(conn, sql, new BeanListHandler<T>(type), params);
    } catch (SQLException e) {
        e.printStackTrace();
    }finally {
        JDBCUtilsTwo.closeConnection(conn);
    }
        return list;
}

    /**
     * 查询表的行数
     */
    public int getCount(String sql,Object...params){
        //获取数据库连接
        Connection conn = JDBCUtilsTwo.getConnection();

        int count = 0;
        try {
            //直接强转会报错,方法返回的是对象,查询到的数据是整数返回的是long类型,提升为Long包装类,再转为Object
            //Object obj = runner.query(conn, sql, new ScalarHandler(), params);
            count = (int)(long)runner.query(conn, sql, new ScalarHandler(), params);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtilsTwo.closeConnection(conn);
        }
        return count;
    }
    //批量增删改操作
    public void batchUpdate(String sql,Object[][] obj){
        //获取数据库连接
        Connection conn = JDBCUtilsTwo.getConnection();

        try {
            //批处理需要的两个数据,第一次批处理执行的是次数,第二个,每次执行sql时对应的次数列表
            runner.batch(conn,sql,obj);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtilsTwo.closeConnection(conn);
        }
    }
}

/**
 * @Outhor : janliujc
 * @Data 2018年09月06日
 */
public class JDBCUtilsTwo {

    //初始化数据库连接池
    static {


        try {
            //需要给数据库连接池提供需要的配置信息
            InputStream is = JDBCUtilsTwo.class.getClassLoader().getResourceAsStream("druid.properties");
            Properties info = new Properties();
            info.load(is);
            //需要一个文件
            dataSource = DruidDataSourceFactory.createDataSource(info);//创建一个数据库连接池
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //声明数据库连接池
    private static DataSource dataSource;

    /**
     * 获取数据库连接的方法
     * @return
     */
    public static Connection getConnection(){

        Connection conn = null;
        try {
            //从连接池中获取连接
            conn = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    /**
     * 释放资源的方法
     * @param conn
     */
    public static void closeConnection(Connection conn){
        if (conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值