完成jdbc操作时,重复代码太多了。
所以 抽取一个jdbc工具类简化书写。
- 抽取注册驱动
- 抽取一个方法获取连接对象
- 抽取一个方法释放资源
方法用static修饰方便调用
src下创建.properties文件(配置文件)
驱动也写进来了,将来如果切换数据库,只用修改配置文件。
文件的读取,只需读取一次即可拿到数据,使用静态代码块。
JDBCUtils
package emp;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
static {//静态代码块里只能用静态
try {
Properties pro=new Properties();
//类加载器:从src下获取文件路径的方式--->ClassLoader
ClassLoader cl = JDBCUtils.class.getClassLoader();
URL res = cl.getResource("jdbc.properties");
String path = res.getPath();
pro.load(new FileReader(path));
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
driver=pro.getProperty("driver");
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//连接对象
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
//释放资源
public static void close(Statement stmt, Connection conn, ResultSet rs){
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//重载
public static void close(Statement stmt, Connection conn){
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
抽取后的代码
private List<Emp> getAll2(){
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
List<Emp> list=new ArrayList<Emp>();
try {
conn = JDBCUtils.getConn();
//sql
String sql="select * from emp";
//创建执行sql的statement对象
stmt = conn.createStatement();
//执行sql
rs = stmt.executeQuery(sql);
//处理结果
Emp m=new Emp();
while (rs.next()){
int id = rs.getInt("id");
String ename = rs.getString("ename");
int job_id = rs.getInt("job_id");
int mgr = rs.getInt("mgr");
Date joindate = rs.getDate("joindate");
double salary = rs.getDouble("salary");
double bonus = rs.getDouble("bonus");
int dept_id = rs.getInt("dept_id");
m.setId(id);
m.setEname(ename);
m.setJob_id(job_id);
m.setMgr(mgr);
m.setJoindate(joindate);
m.setSalary(salary);
m.setBonus(bonus);
m.setDept_id(dept_id);
list.add(m);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(stmt,conn,rs);
}
return list;
}