java连接数据库的优化

前言

java连接数据库的优化

一、创建db.properties

首先在src文件夹右击(注意:一定要在src文件夹内,不要建在其他文件夹内),选择新建,然后选择资源包,
在这里插入图片描述
然后资源包基名称命名为db即可,由于我已经创建过,所谓会出现红字,显示db.properties的文件已存在
在这里插入图片描述
如果分别单独创建增删改查时,每次都会用到的重复的代码。
这里面是连接数据库,用户名和密码
这是我的用户名和密码,有的人的密码可能会是123456,看每个人的不同
在这里插入图片描述

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/movie-manager?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

二、创建BaseDao.java

1.引入库及初始化相关数据

首先声明配置文件读取器,在声明db.properties里面的四个数据信息
在这里插入图片描述

 /*声明配置文件读取器*/
    private ResourceBundle rb;
    /*声明数据库驱动*/
    private  String driver;
    /*声明连接地址*/
    private  String url;
    /*声明用户名*/
    private  String username;
    /*声明密码*/
    private  String password;
``
  /*声明数据库链接类*/
    private  Connection conn;
    /*声明数据库执行类*/
    private PreparedStatement statement;
    /*声明数据结果集合*/
    private  ResultSet rs;
    /********************************/
public BaseDao(){
        /*加载配置文件*/
        rb=ResourceBundle.getBundle("db");
        /*获取配置文件中的值*/
        driver=rb.getString("jdbc.driver");
        url=rb.getString("jdbc.url");
        username=rb.getString("jdbc.username");
        password=rb.getString("jdbc.password");
    }

    /*打开并获取链接*/
    private void openConn(){
        try {
            Class.forName(driver);
            conn=DriverManager.getConnection(url,username,password);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

2.通用增删改查

private void formatterStatement(String sql,Object ...objs){
        try {
            /*打开连接*/
            openConn();
            /*获取执行器*/
            statement=conn.prepareStatement(sql);
            /*遍历占位符数组*/
            for(int i=0;i< objs.length;i++){
                /*进行占位符赋值*/
                statement.setObject(i+1,objs[i]);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
     ```
## 通用增删改查
```java
 /**
     * 通用增删改查
     * @param sql 执行的sql语句
     * @param objs 占位符数组
     * @return 受影响行数
     */
       protected int baseUpdate(String sql,Object ...objs){
        try {
           formatterStatement(sql,objs);
            /*返回执行结果*/
            return statement.executeUpdate();
 } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
        /*try中如果没有返回,则表示执行失败,必定返回0*/
        return 0;
    }

通用单条

 /**
     * 通用查询单条
     * @param tClass 泛型的类对象
     * @param sql    执行的sql
     * @param objs   占位符数组
     * @return       结果实体类
     *
     */
    public T baseQueryEntity(Class<T> tClass,String sql,Object ...objs){
        /*查询结果获取集合*/
        List<T> list=baseQuery(tClass,sql,objs);
        /*判断结果集是否合法*/
        if(list.size()>1){
            /*主动抛出异常,用来终止代码的执行*/
            throw new RuntimeException("查询结果为"+list.size()+"条,不符合规定!");
        }
        /*无结果则直接返回null*/
        if(list.size()==0){
            return null;
        }
        /*有结果则返回数据*/
        return list.get(0);
    }

关闭所有流

  /*关闭所有流*/
    private void closeAll(){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

总结

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值