一、什么时候自己创建工具类?
如果一个功能经常要用到,我们建议把这个功能做成一个工具类,可以在不同的地方重用。
比如我们在JDBC程序中发现,每次都要获取连接对象,输入URL、密码、用户ing等操作,每次使用完都需要关闭资源,这些操作都是重复的,可以弄成一个工具类,方便调用。
二、目的:简化书写
* 分析:
1. 注册驱动也抽取
2. 抽取一个方法获取连接对象
* 需求:不想传递参数(麻烦),还得保证工具类的通用性。
* 解决:配置文件
jdbc.properties
url=
user=
password=
3. 抽取一个方法释放资源
三、需求
上面写的代码中出现了很多重复的代码,可以把这些公共代码抽取出来。
7.2 创建类JdbcUtil包含3个方法:
1) 可以把几个字符串定义成常量:用户名,密码,URL,驱动类
2) 得到数据库的连接:getConnection()
3) 关闭所有打开的资源:
四、案例
JDBC.properties
#utl=jdbc:mysql://localhost:3306/myemployees
utl=jdbc:mysql://localhost:3306/sql_sel
user=root
password=tt1314521
driver=com.mysql.jdbc.Driver
JDBCUtils.JDBCUtils
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String utl;
private static String user;
private static String password;
private static String driver;
/**
* 静态方法,只会执行一次后马上销毁
*/
static{
try {
//创建Properties集合
Properties properties = new Properties();
//获取当前类的加载信息
ClassLoader cl = JDBCUtils.class.getClassLoader();
/*
获取配置文件信息方式一
*/
InputStream jdbc = cl.getResourceAsStream("JDBC.properties");
properties.load(jdbc);
/*
获取配置文件方式二
*/
/*URL ros = cl.getResource("JDBC.properties");
String path = ros.getPath();
properties.load(new FileReader(path));*/
utl = properties.getProperty("utl");
user = properties.getProperty("user");
password = properties.getProperty("password");
driver = properties.getProperty("driver");
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection =null;
try {
Class.forName(driver);
connection = DriverManager.getConnection(utl, user, password);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
return connection;
}
}
/**
*
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn){
try {
if(stmt != null){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
*
* @param rest
* @param stmt
* @param conn
*/
public static void close(ResultSet rest, Statement stmt, Connection conn){
if (rest != null){
try {
rest.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try {
stmt.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
}