Dao操作的抽取, BaseDao
public class BaseDao {
private Connection con;
private PreparedStatement pstmt;
private ResultSet rs;
public void update(String sql,Object[] paramsValue){
try {
con = JdbcUtil.getConnection();
pstmt = con.prepareStatement(sql);
int count = pstmt.getParameterMetaData().getParameterCount();
if (paramsValue != null && paramsValue.length > 0) {
for(int i=0;i<count;i++) {
pstmt.setObject(i+1, paramsValue[i]);
}
}
pstmt.executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JdbcUtil.closeAll(con, pstmt, null);
}
}
public <T> List<T> query(String sql, Object[] paramsValue,Class<T> clazz){
try {
List<T> list = new ArrayList<T>();
T t = null;
con = JdbcUtil.getConnection();
pstmt = con.prepareStatement(sql);
int count = pstmt.getParameterMetaData().getParameterCount();
if (paramsValue != null && paramsValue.length > 0) {
for (int i=0; i<paramsValue.length; i++) {
pstmt.setObject(i+1, paramsValue[i]);
}
}
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
t = clazz.newInstance();
for (int i=0; i<columnCount; i++) {
String columnName = rsmd.getColumnName(i + 1);
Object value = rs.getObject(columnName);
BeanUtils.copyProperty(t, columnName, value);
}
list.add(t);
}
return list;
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JdbcUtil.closeAll(con, pstmt, rs);
}
}
}
public class AdminDao extends BaseDao {
public void delete(int id) {
String sql = "delete from admin where id=?";
Object[] paramsValue = {id};
super.update(sql, paramsValue);
}
public void save(Admin admin) {
String sql = "insert into admin (userName,pwd) values (?,?)";
Object[] paramsValue = {admin.getUserName(),admin.getPwd()};
super.update(sql, paramsValue);
}
public List<Admin> getAll(){
String sql = "select * from admin";
List<Admin> list = super.query(sql, null, Admin.class);
return list;
}
public Admin findById(int id){
String sql = "select * from admin where id=?";
List<Admin> list = super.query(sql, new Object[]{id}, Admin.class);
return (list!=null&&list.size()>0) ? list.get(0) : null;
}
}