工具层:
public class BaseDao {
private Connection connection;
private PreparedStatement preparedStatement;
private ResultSet resultSet;
public void update(String sql, Object[] paramsValue) {
connection = jdbcUtil.getConnection();
try {
preparedStatement = connection.prepareStatement(sql);
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
int count = parameterMetaData.getParameterCount();
if (paramsValue != null && paramsValue.length > 0) {
for (int i = 0; i < count; i++) {
preparedStatement.setObject(i + 1, paramsValue[i]);
}
}
int number = preparedStatement.executeUpdate();
System.out.println(number);
} catch (Exception e) {
e.printStackTrace();
}
}
public <T> List<T> query(String sql,Object[] objects,Class<T> clazz){
try {
List<T> list = new ArrayList<T>();
T t = null;
connection = jdbcUtil.getConnection();
preparedStatement = connection.prepareStatement(sql);
if(objects!=null &&objects.length>0) {
for(int i=0;i<objects.length;i++) {
preparedStatement.setObject(i+1, objects[i]);
}
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int count = resultSetMetaData.getColumnCount();
while(resultSet.next()) {
t = clazz.newInstance();
for(int j=0;j<count;j++) {
String name = resultSetMetaData.getColumnName(j+1);
Object value = resultSet.getObject(name);
BeanUtils.setProperty(t, name, value);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
jdbcUtil.close(connection, preparedStatement, resultSet);
}
}
}
Dao层:
public class StudentDao extends BaseDao {
public void save(Student student) {
String sql = "INSERT INTO student(id,name) VALUE(?,?)";
Object[] objects = { student.getId(), student.getName() };
super.update(sql, objects);
}
public void delete(int id) {
String sql = "delete FROM student WHERE id=?";
Object[] objects = { id };
super.update(sql, objects);
}
public Student selectOne(int id) {
String sql = "SELECT *FROM student WHERE id=?";
Object[] objects = { id };
List<Student> list = super.query(sql, objects, Student.class);
return (list != null && list.size() > 0) ? list.get(0) : null;
}
public List<Student> selectAll(){
String sql = "SELECT *FROM student";
List<Student> list = super.query(sql, null, Student.class);
return list;
}
}