oracle/mysql连接德鲁伊数据库连接池和使用dbutils第三方jar包简化dao层实现增删改查

导入commons-dbutils-1.3.jar包

Oracle

Dao层所有dao实现类均继承此抽象BaseDao

/** * @Author Li Weitong * @Date 2020/11/22 10:43 */
public abstract class BaseDao { 
    private QueryRunner queryRunner = new QueryRunner();

    /** * 执行insert/update/delete语句 * 在商品管理新系统,担当增删改商品信息 * 在学生管理系统中,担当增加学生信息,修改学生信息,删除学生信息 * @param sql sql语句 * @param args sql语句中对应的参数 * @return 返回-1执行失败,返回其他表示影响的行数 */
    public int update(String sql,Object ... args){ 
        Connection connection = JdbcUtils.getConnection();
        try { 
            return queryRunner.update(connection,sql,args);
        } catch (SQLException e) { 
            e.printStackTrace();
        }finally { 
            JdbcUtils.close(connection);
        }
        return -1;
    }

    /** * 查询一个泛型为bean的一条javaBean的sql语句 * 在学生管理系统中,担当查询一名学生的所有信息 * 在商品管理系统中,担当点击修改一条商品按钮或超链接后,现在修改界面回显当前一条商品的默认信息,再在此基础上进行后续修改 * @param type 返回对象类型 * @param sql 执行sql语句 * @param args sql对应的参数值 * @param <T> 返回的类型的泛型 * @return 返回一整条记录 */
    public <T> T queryForOne(Class<T> type,String sql,Object ... args){ 
        Connection connection = JdbcUtils.getConnection();
        try { 
            return queryRunner.query(connection,sql,new BeanHandler<T>(type),args);
        } catch (SQLException e) { 
            e.printStackTrace();
        }finally { 
            JdbcUtils.close(connection);
        }
        return null;

    }

    /** * 查询多条Javabean记录sql语句 * 在学生管理系统中,担当列出整个学生列表 * 在商品管理系统中,担当分页列出商品列表信息。 * @param type 返回对象类型 * @param sql sql语句 * @param args sql对应的参数 * @param <T> 返回类型的泛型 * @return 返回多条记录 */
    public <T> List<T> queryForList(Class<T> type,String sql,Object ... args){ 
        Connection connection = JdbcUtils.getConnection();
        try { 
            return queryRunner.query(connection,sql,new BeanListHandler<T>(type),args);
        } catch (SQLException e) { 
            e.printStackTrace();
        }finally { 
            JdbcUtils.close(connection);
        }
        return null;
    }

    /** * 返回一行一列的sql语句 * 在学生管理系统中,担当 查询一个学生的某个字段属性 * 在商品管理系统中,担当 分页查询总记录数pageTotalCount(count(*)这一行一列数据) * @param sql 执行的sql语句 * @param args sql对应的参数值 * @return 返回一个属性字段值 */
    public Object queryForSingleValue(String sql,Object ... args){ 
        Connection connection = JdbcUtils.getConnection();
        try { 
            return queryRunner.query(connection,sql,new ScalarHandler(),args);
        } catch (SQLException e) { 
            e.printStackTrace();
        }finally { 
            JdbcUtils.close(connection);
        }
        return null;
    }

}

JdbcUtils类,如下

/** * 封装连接、关闭数据库工具类 * @Author Li Weitong * @Date 2020/11/22 09:26 */
public class JdbcUtils { 
    private static DruidDataSource druidDataSource;

    static {  //通过静态代码块在类创建前被调用,优雅代码
            // 通过类加载器以二进制IO流的形式读取配置文件信息 并加载配置文件
        try { 
            InputStream resourceAsStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            Properties properties = new Properties();
            properties.load(resourceAsStream);
            // 通过德鲁伊数据库工厂创建数据库连接池
            druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) { 
            e.printStackTrace();
        } catch (Exception e) { 
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){ 
        Connection connection = null;
        try { 
            connection = druidDataSource.getConnection();
        } catch (SQLException e) { 
            e.printStackTrace();
        }
        return connection;
    }

    public static void close(Connection connection){ 
        if (connection != null) { 
            try { 
                connection.close();
            } catch (SQLException e) { 
                e.printStackTrace();
            }
        }

    }
}

Oracle的jdbc.properties 注意:固定在src此目录下

如下:

username=scott
password=123456
url=jdbc:oracle:thin:@192.168.58.129:1521:helowin
driverClassName=oracle.jdbc.driver.OracleDriver
#谨记,当前学习所用ojdbc6已经过时,今后我的项目若用到ojdbc9/ojdbc12,需要把driver删除。
initialSize=5
maxActive=10

测试是否可以连接德鲁伊数据库连接池,如下:

/** * 测试通过德鲁伊连接池连接oracle数据库 * 测试成功 */
public class JdbcUtilTest { 
    @Test
    public void test(){ 
        Connection connection = JdbcUtils.getConnection();
        System.out.println(connection);
        JdbcUtils.close(connection);
    }
}

mysql

待续

Mysql的jdbc.properties 注意:固定在src此目录下

username=root
password=123456
# 3306/数据库名
url=jdbc:mysql://192.168.58.129:3306/cabbeenMall
driverClassName=com.mysql.cj.jdbc.Driver
initialSize=5
maxActive=10

本文地址:https://blog.csdn.net/m0_47119598/article/details/109923630

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐