jdbc入门到精通2

[1]封装数据库连接工具类(JDBCUtils):

在这里插入图片描述

a.满足重用性方案:
  1. 将加载驱动和获得连接对象的操作封装在方法中。

    /**
     * 获取数据库连接对象
     * 
     * @return conn 数据库连接对象
     */
    public static Connection getConn() {
        Connection conn = null;
        try {
            // 1.加载驱动
    		Class.forName("oracle.jdbc.OracleDriver");
    		// 2.创建连接
    		String url = "jdbc:oracle:thin:@192.168.230.10:1521:orcl";
    		Connection conn = DriverManager.getConnection(url, "username", "password");
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        return conn;
    }
    
  2. 将释放多个资源的操作封装在方法中。

    /**
     * 释放资源
     * 
     * @param rs   执行结果集
     * @param stm  sql操作对象
     * @param conn 数据库连接
     */
    public static void release(ResultSet rs, Statement stm, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if (stm != null) {
            try {
                stm.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
    
b.满足跨平台性方案[重点]

由于数据库连接随着业务的变更是有变更需求的,因此我们遵循开闭原则,以配置文件的形式加载数据库配置信息

package cn.net.trimmer.jdbc.util;

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

/**
 * jdbc 工具类简单抽取
 * 
 * @author wl
 *
 */
public class JdbcUtils {
	private static final Properties prop = new Properties();
	// 类加载时读取配置文件,保证读取配置文件只执行一次
	static {
		InputStream in = null;
		try {
			// 1. 从类路径加载配置文件
			in = JdbcUtils.class.getResourceAsStream("/cn/net/trimmer/jdbc/conf/db.properties");
			// 2. 解析配置文件
			prop.load(in);
			System.out.println("数据库配置文件加载完成...");
		} catch (IOException e) {
			e.printStackTrace();
			if (in != null) {
				try {
					in.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}

	/**
	 * 获取数据库连接对象
	 * 
	 * @return conn 数据库连接对象
	 */
	public static Connection getConn() {
		Connection conn = null;
		try {
			String driver = prop.getProperty("jdbc.driver");
			String url = prop.getProperty("jdbc.url");
			String username = prop.getProperty("jdbc.username");
			String password = prop.getProperty("jdbc.password");
			//加载驱动
			Class.forName(driver);
			//获得连接对象
			conn = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
		return conn;
	}

	/**
	 * 释放资源
	 * 
	 * @param rs   执行结果集
	 * @param stm  sql操作对象
	 * @param conn 数据库连接
	 */
	public static void release(ResultSet rs, Statement stm, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
		if (stm != null) {
			try {
				stm.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}
}

[2]ORM(Object Relationship Mapping)【重点】:对象关系映射

img

  1. 将一行中多个零散数据进行整理。

  2. 通过Entity的规则(私有属性、公共访问方法、无参构造方法),将表中的数据进行对象的封装。

  3. 表名 —— 类名; 列名 —— 属性名。

[3]数据访问对象DAO(Data Access Object)【重点】:

  1. 将所有对同一张表的操作封装在一个XXXDaoImpl的对象中。

  2. 根据增删改查的不同功能实现具体的方法(insertXXX、updateXXX、deleteXXX、selectXXX、selectAllXXX)。

  3. 经验:对于任何一张表中的数据进行操作时,无非就是增删改查。应将所有对于某一张表的操作同一封装在一个数据访问对象中。

[4]junit的使用:单元测试

  1. 引入Jar包。

  2. 在方法中添加@Test注解

  3. 注意:类名不能使用Test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值