直接将封装的方法抽取到工具类中
为了更加便于使用,将之前封装jdbc增删改(update)查(query)的方法抽取到一个工具类DButil中,如果想要使用增删改查的功能,就可以直接通过DBUtil这个工具类来调用。代码如下
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
interface IRowMapper{
void rowMapper(ResultSet rs);
}
public class DBUtil {
public static void query(String sql,IRowMapper rowMapper) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
rowMapper.rowMapper(resultSet);//多态
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (resultSet!=null) {
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (statement!=null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (connection!=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static boolean update(String sql) {
Connection connection = null;
Statement statement= null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
statement= connection.createStatement();
return statement.executeUpdate(sql)>0;
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (statement!=null) {
statement.close();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
if (connection !=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
}
优化工具类
当我们将之前封装jdbc增删改(update)查(query)的方法抽取到一个工具类DButil以后,依旧出现了重复的代码,为了提高代码的复用性,因此我们可以优化工具类,提高其性能。
1.因为驱动只需要加载一次,所以可以放在静态代码块中 这样在类加载的时候驱动就会加载,且只加载一次
2.将建立连接的代码抽取成方法,提高代码的复用性
3.将释放资源的代码抽取成方法,因为在query方法和update方法中需要关闭的对象个数不同,因此可以使用用方法的重载
代码如下: