欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-24 19:08:22
导入commons-dbutils-1.3.jar包OracleDao层所有dao实现类均继承此抽象BaseDao/** * @Author Li Weitong * @Date 2020/11/22 10:43 */public abstract class BaseDao { private QueryRunner queryRunner = new QueryRunner(); /** * 执行insert/update/delete语句 * 在商品...

导入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