自己封装的数据库DbUtils的万能模板

自己封装的数据库DbUtils的万能模板,第1张

文章目录
  • 前言
  • 一、封装数据库 *** 作主要执行的步骤是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.加载配置文件和事务信息
    • 3.数据库的连接和关闭方法封装
    • 4.数据库事务相关的 *** 作
    • 5.数据库连接的配置信息
  • 总结


前言

数据库的 *** 作很多步骤都是重复的,花费大量的时间和人力去编辑是一个很不值得的事情,所以我们可以自己写一个工具类,把数据库 *** 作几个相同的方法给封装起来使用的时候,直接去调用就可以方便很多。简而言之就是,简化了JDBC *** 作,可以少写代码。


一、封装数据库 *** 作主要执行的步骤是什么?

1.导入相关jar包。
2.创建一个配置文件,去配置文件去编辑数据库连接的具体数值。
3.在工具类中去写加载和实现配置文件。
4.去实现数据库的连接,关闭。
5.去实现和事务相关的 *** 作,开启事务,提交事务,回滚事务。

二、使用步骤 1.引入库

代码如下(示例):

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

2.加载配置文件和事务信息

代码如下(示例):

public class DbUtils {
    private static DruidDataSource ds;
    private static final ThreadLocal<Connection> THREAD_LOCAL = new ThreadLocal<>();

    static {
        Properties properties = new Properties();
        InputStream is = DbUtils.class.getResourceAsStream("/database.properties");
        try {
            properties.load(is);
            ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3.数据库的连接和关闭方法封装
  //数据库的连接
  public static Connection getConnection() {
        Connection connection = THREAD_LOCAL.get();
        try {
            if (connection == null) {
                connection = ds.getConnection();
                THREAD_LOCAL.set(connection);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

//数据库的关闭
    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
                THREAD_LOCAL.remove();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


4.数据库事务相关的 *** 作
//事务的开始
 public static void begin() {
        Connection connection = null;
        try {
            connection = getConnection();
            connection.setAutoCommit(false);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
//事务的提交
    public static void commit() {
        Connection connection = null;
        try {
            connection = getConnection();
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeAll(connection, null, null);
        }
    }
    
//事务的回滚
    public static void rollback() {
        Connection connection = null;
        try {
            connection = getConnection();
            connection.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeAll(connection, null, null);
        }
    }


5.数据库连接的配置信息
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ems?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
#初始化连接
initialSize=10
#最大连接数量
maxActive=30
#最小空闲连接
maxIdle=5
#超时等待时间
maxWait=3000

总结

如果有什么纰漏不足,希望大家指出,谢谢各位好汉关照。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/915426.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存