JDBC工具类封装

简介: JDBC工具类封装

工具类封装


在前面的JDBC案例中我们不难发现,每次操纵数据库都需要进行数据库的注册、连接等大量重复的操作,是的代码变得十分的臃肿,所以此时我们应该考虑如何把重复代码提取出来,随时需要随时拿来用。


这就是工具类的封装。


案例实现:实现emp表的查询、添加、删除、修改


封装DbUtils


由于多个地方都需要使用数据库连接和释放,所以把功能封装到工具类中DbUtils

四个功能:


注册驱动


获取连接


释放资源


执行命令


db.properties信息文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/emp
user=root
password=root


自定义DbUtils工具类

public class DBUtils {
    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    static {
        // 使用信息文件进行赋值
        // 使用类加载器加载信息文件
        InputStream is = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");
        Properties pro = new Properties();
        try {
            // 读取文件信息并赋值
            pro.load(is);
            driver = pro.getProperty("driver");
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            // 注册驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // 获取数据库连接
    public static Connection getConnection() {
        Connection conn = null;
        try {
            // 获取数据库连接
            conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
    // 更新数据库
    public static int update(String sql, Object... params) {// 接收SQL语句和数据完成数据库的操作
        Connection conn = getConnection();
        PreparedStatement ps = null;
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                ps.setObject(i + 1, params[i]);
            }
            int len = ps.executeUpdate();
            return len;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeAll(conn, ps, null);
        }
        return 0;
    }
    // 查询所有
    public static List<Employee> getAll() {
        List<Employee> list = new ArrayList<Employee>();
        String sql = "SELECT * FROM emp;";
        Connection conn = getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            while (rs.next()) {
                int empno = rs.getInt(1);
                String ename = rs.getString(2);
                String job = rs.getString(3);
                int mgr = rs.getInt(4);
                Date hiredate = rs.getDate(5);
                double sal = rs.getDouble(6);
                double comm = rs.getDouble(7);
                int deptno = rs.getInt(8);
                Employee emp = new Employee(empno, ename, job, mgr, hiredate, sal, comm, deptno);
                list.add(emp);
            }
            return list;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
    // 根据ID查询
    public static Employee getById(int empno) {
        String sql = "SELECT * FROM emp WHERE empno=?";
        Connection conn = getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        Employee emp = null;
        try {
            ps = conn.prepareStatement(sql);
            ps.setInt(1, empno);
            rs = ps.executeQuery();
            if (rs.next()) {
                String ename = rs.getString(2);
                String job = rs.getString(3);
                int mgr = rs.getInt(4);
                Date hiredate = rs.getDate(5);
                double sal = rs.getDouble(6);
                double comm = rs.getDouble(7);
                int deptno = rs.getInt(8);
                emp = new Employee(empno, ename, job, mgr, hiredate, sal, comm, deptno);
            }
            return emp;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
    // 关闭数据库连接
    public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (ps != null) {
                ps.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}



目录
相关文章
|
Java 数据库连接
JDBC跨平台封装工具类
JDBC跨平台封装工具类
105 2
|
Java 关系型数据库 MySQL
JDBC连接数据库工具类
JDBC连接数据库工具类
131 0
|
Java 数据库连接
JavaWeb用户信息管理系统-创建POJO以及JDBC工具类
JavaWeb用户信息管理系统-创建POJO以及JDBC工具类
174 0
|
SQL druid Java
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
534 0
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
185 1
|
Java 数据库连接
Java 中封装JDBC连接到JDBCUtils工具类的详解
Java 中封装JDBC连接到JDBCUtils工具类的详解
173 0
|
SQL Java 数据库连接
老程序员分享:JDBC工具类封装、封装DAO方法与数据库表实体类封装的使用案列详情
老程序员分享:JDBC工具类封装、封装DAO方法与数据库表实体类封装的使用案列详情
|
SQL Java 数据库连接
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)(下)
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
629 1
|
SQL Java 数据库连接
JDBC如何封装成Mybaits持久层框架只需4
本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。
100 0
|
SQL druid Java
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
JDBC技术【分页查询、数据库连接池、应用程序分层、封装通用的BaseDao】(四)-全面详解(学习总结---从入门到深化)
499 0
下一篇
oss云网关配置