Jdbc使用总结和工具封装(二)

Jdbc使用总结和工具封装(二)

JDBC工具类封装

任务说明:
	1. 当前类提供一个对外的公开方法,用户获取数据库连接对象
	2. 当前类管理数据库操作过程中的资源关闭过程
	3. 以上方法都是工具类方法【static静态】
class JdbcUtil

获取数据库连接对象方法分析

方法名确定:
	为了减轻压力,这里使用和JDBC核心API同名方法 getConnection
   
方法使用:
	无参数方法使用更方便,操心的事情更少。方法无参,当前数据库连接使用的必要资源通过其他方式提供。

返回值类型:	
	java.sql.Connection 

方法声明:
	public static java.sql.Connection getConnection();

当前方法资源需求分析
	因为getConnection是一个static修饰的静态方法,有且只能使用类内的静态资源。数据库连接必要条件:
		driverClass jdbcUrl user password 需要通过静态方式来处理。
	当前JDBC驱动需要在getConnection方法运行之前准备就绪。
	这里需要通过static 修饰的静态代码块来自动加载驱动。

关闭资源方法整合实现

需要进行关闭的资源内容:
	1. Connection 数据库连接对象
	2. Statement 数据库搬运工对象
	3. ResultSet 数据库查询结果集对象

都是 AutoCloseable 接口的子接口,并且close方法规范接口是 AutoCloseable。
类似于:	
	反射中 AccessibleObject 类内静态方法
		setAccessible(AccessibleObject[] arr, boolean flag);
			数组可以支持 Field类,Constructor类,Method类

考虑提供给用户三个方法(补充到第四个!!!)
	情况1: 关闭数据库连接对象 Connection
		public static void close(Connection conn);
	情况2: 关闭数据库连接对象 Connection 关闭数据库搬运工对象 Statement
		public static void close(Connection conn, Statement st);
	情况3: 关闭数据库连接对象 Connection 关闭数据库搬运工对象 Statement 数据库查询结果集对象 ResultSet
		public static void close(Connection conn, Statement st, ResultSet rs);

PreparedStatement代码演示
package util;

import java.sql.*;

/**
 * JDBC数据库工具类
 * 1. 数据库对象获取功能
 * 2. 数据库资源关闭功能
 */
public class JdbcUtil {
    /*
    准备静态成员变量用于保存数据库连接使用的资源内容
     */
    private static String driverClass = "com.mysql.jdbc.Driver";
    private static String jdbcUrl = "jdbc:mysql://localhost:3306/javaee2011?useSSL=false";
    private static String username = "root";
    private static String password = "123456";

    /*
    利用静态代码块在类文件加载阶段一定会执行的特征,自动加载当前数据库连接所需驱动
     */
    static {
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * JDBC工具类获取数据连接对象方法。如果用户提供的数据库连接信息有误,返回null
     *
     * @return java.sql.Connection对象,如果信息有误,返回null
     */
    public static Connection getConnection() {
        Connection connection = null;

        try {
            connection = DriverManager.getConnection(jdbcUrl, username, password);
        } catch (SQLException e) {
            // 后期可以使用日志来记录操作错误情况。
            e.printStackTrace();
        }

        return connection;
    }

    /**
     * 对外提供关闭数据库连接对象方法
     *
     * @param conn java.sql.Connection数据库连接对象
     */
    public static void close(Connection conn) {
        close(conn, null, null);
    }

    /**
     * 对外提供关闭数据库和数据库表搬运工对象方法
     *
     * @param conn java.sql.Connection 数据库连接对象
     * @param st   java.sql.Statement 数据库搬运工对象
     */
    public static void close(Connection conn, Statement st) {
        close(conn, st, null);
    }

    /**
     * 对外提供关闭数据库,数据库表搬运工对象以及数据库查询结果集对象方法
     *
     * @param conn java.sql.Connection 数据库连接对象
     * @param st   java.sql.Statement 数据库搬运工对象
     * @param rs   java.sql.ResultSet 数据库查询结果集对象
     */
    public static void close(Connection conn, Statement st, ResultSet rs) {
        try {
            close(rs, st, conn);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 类内私有化静态成员方法,用于提供关闭资源的一个能力
     *
     * @param res AutoCloseable 接口不定长参数,要求传入的是当前数据库操作对应的数据库资源
     * @throws Exception AutoCloseable 接口中close方法抛出异常
     */
    private static void close(AutoCloseable... res) throws Exception {
        for (AutoCloseable re : res) {
            if (re != null) {
                re.close();
            }
        }
    }
}
JDBC代码优化
JdbcUtil工具类优化
准备db.properties
# 文件所在位置是src目录下
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/javaee2011?useSSL=false
username=root
password=123456

使用Properties读取配置文件操作

/*
准备静态成员变量用于保存数据库连接使用的资源内容
 */
private static String jdbcUrl;
private static String username;
private static String password;

/*
利用静态代码块在类文件加载阶段一定会执行的特征,自动加载当前数据库连接所需驱动
 */
static {
    try {
        // 读取Properties属性文件内容
        Properties properties = new Properties();
        
        // 加载指定路径的Properties文件对应当前Properties类
        properties.load(new FileInputStream("./src/db.properties"));
        
        // 通过 Properties 属性类对象根据Key获取对应的值
        jdbcUrl = properties.getProperty("jdbcUrl");
        username = properties.getProperty("username");
        password = properties.getProperty("password");
        
        Class.forName(properties.getProperty("driverClass"));
    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值