1、工具类DBUtil.java
package com.woow.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DBUtil {
private static final String DRIVERCLASS = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/dvdmanager?useUnicode=true&characterEncoding=UTF-8";
private static final String USER = "root";
private static final String PASSWORD = "123456";
static {
try {
//加载驱动
Class.forName(DRIVERCLASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
conn = DriverManager.getConnection(URL, USER, PASSWORD);
return conn;
}
/**
* 获取statment对象
* @param conn 数据库连接对象
* @param sql
* @return
* @throws SQLException
*/
public static PreparedStatement getStatement(Connection conn, String sql) throws SQLException {
PreparedStatement pstmt = conn.prepareStatement(sql);
return pstmt;
}
/**
* 关闭连接,回收资源
* @param conn
* @param stmt
*/
public static void destory(Connection conn, Statement stmt) {
try {
conn.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 执行单行查询的方法
*/
public static <T> T query(String sql, ExtractData<T> ed, Object...objects) {
Connection conn = null;
T t = null;
try {
conn = getConnection();
PreparedStatement pstmt = getStatement(conn, sql);
//绑定参数
for(int i = 0; i < objects.length; i++) {
pstmt.setObject(i + 1, objects[i]);
}
//执行sql
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
t = ed.extract(rs);
}
rs.close();
destory(conn, pstmt);
} catch (SQLException e) {
e.printStackTrace();
}
return t;
}
}
2、接口ExtractData.java
package com.woow.utils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public interface ExtractData<T> {
/**
* 从结果集中提取数据封装成T对象
* @param rs sql执行后的结果集
* @return
* @throws SQLException
*/
T extract(ResultSet rs) throws SQLException;
}
3、使用封装好的工具
package com.woow.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.woow.domain.DVD;
import com.woow.utils.DBUtil;
import com.woow.utils.ExtractAll;
import com.woow.utils.ExtractData;
public class DVDDao3 {
public static void main(String[] args) {
DVDDao3 dao = new DVDDao3();
DVD dvd = dao.getById(11);
System.out.println(dvd);
}
public DVD getById(int id) {
String sql = "select * from dvd where id = ?";
DVD d = DBUtil.query(sql, new ExtractData<DVD>() {
public DVD extract(ResultSet rs) throws SQLException {
DVD dvd = new DVD();
dvd.setId(rs.getInt(1));
dvd.setName(rs.getString(2));
dvd.setClazz(rs.getString(3));
dvd.setTimelen(rs.getInt(4));
dvd.setLanguage(rs.getString(5));
return dvd;
}
}, id);
return d;
}
}