JDBC工具类 JDBCUtils
- 目的:简化书写
- 分析:
- 注册驱动也抽取
- 抽取一个方法获取连接对象
-
需求:不想传递参数(麻烦),还得保证工具类的通用性。
-
解决:使用配置文件
1.创建src下的配置文件jdbc.properties
url=jdbc:mysql:///test
user=root
password=123456
driver=com.mysql.jdbc.Driver
2.新建一个包创建JDBCUtils工具类
package cn.abc.util;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
//JDBC工具类
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
//静态代码块
static {
//读取资源文件,获取值
try {
//1.创建Properties集合类
Properties pro =new Properties();
//2.加载文件
pro.load(new FileReader("src/jdbc.properties"));
//3.获取数据,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4.注册驱动
Class.forName(driver);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接的工具方法
//返回连接对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
//释放资源
public static void close(Statement stemt, Connection conn){
if(stemt!=null){
try {
stemt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stemt, Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stemt!=null){
try {
stemt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3. 使用演示
package cn.abc.jdbc;
import cn.abc.test.FindAll;
import cn.abc.util.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JdbcDemo5 {
public static void main(String[] args) {
List<FindAll> list = new JdbcDemo5().find();
for (FindAll f:list) {
System.out.println(f);
}
}
//演示JDBC工具类,简化代码
public List<FindAll> find(){
Connection conn=null;
Statement statm=null;
ResultSet rs=null;
List<FindAll> rsfa = new ArrayList<FindAll>();
try {
// Class.forName("com.mysql.jdbc.Driver");
// conn = DriverManager.getConnection("jdbc:mysql:///test", "root", "123456");
conn = JDBCUtils.getConnection();
statm = conn.createStatement();
String sql = "select * from admin";
rs = statm.executeQuery(sql);
rsfa = new ArrayList<FindAll>();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int salary = rs.getInt("salary");
FindAll fa = new FindAll();
fa.setId(id);
fa.setName(name);
fa.setSalary(salary);
rsfa.add(fa);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
// if (rs!=null){
// try {
// rs.close();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
// if (conn!=null){
// try {
// conn.close();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
// if (statm!=null){
// try {
// statm.close();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
JDBCUtils.close(rs,statm,conn);
}
return rsfa;
}
}