一、在servlet层的大概思路
- 得到需要的参数或者参数的map集合
- 使用beanUtils.populate()方法吧参数封装到bean实体对象中去
- 开始去调用service层的方法(中间有种递归的感觉,会先在servlet中去调用到service层的方法(然后又会创建一个dao层对象在service中去调用Dao层中的方法,然后把得到的结果一步一步往上层返回))
- 最后会对service层返回的结果作为判断依据做出判断,是删除成功或者是修改成功
public void deleteCategory(HttpServletRequest request, HttpServletResponse response) {
try {
Map<String, String[]> parameterMap = request.getParameterMap();
Category category= new Category();
BeanUtils.populate(category,parameterMap);
CategoryService categoryService = new CategoryService();
boolean deleteCategory = categoryService.deleteCategory(category);
if (deleteCategory){
response.sendRedirect(request.getContextPath()+
"/category?method=getCategoryList¤tPage=1¤tCount=10");
}
else {
response.getWriter().write("删除失败");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
二、在service层(其主要目的就是作为servlet层和Dao层的桥梁,但是还是以逻辑业务为主)
- 创建dao层对象,然后调用dao层方法
- 给出适当的返回值
public boolean deleteCategory(Category category) throws SQLException {
CategoryDao dao = new CategoryDao();
boolean deleteCategory = dao.deleteCategory(category);
return deleteCategory;
}
三、Dao层主要就是只管从数据库中去获取数据
- 使用C3P0的连接池
- 然后使用queryRanner对象去掉用update或者query方法
- 创建SQL语句
- 这一步是关键,因为根据你拿到的数据类型不同,有时候需要所以你需要传进来的参数也不同(ArrayHandler、ArrayListHandler、BeanHandler、BeanListHandler、MapHandler、MapListHandler、ScalarHandle)后面会对使用哪个结果集比较好做一个详细的讲解
- 返回结果(Boolean)或者集合
public boolean deleteCategory(Category category) throws SQLException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
QueryRunner queryRunner = new QueryRunner(dataSource);
String sql = "delete from category where c_id = ? ";
int row = queryRunner.update(sql, category.getC_id());
if (row>0){
return true;
}else {
return false;
}