# CategoryDAO
CategoryDAO 这个类比起后面的DAO比较单纯,基本上就是提供数据库相关的CRUD操作:
```
package com.dodoke.dao.inter;
import java.util.List;
import com.dodoke.bean.Category;
public interface CategoryDao {
/**
* 增加
*
* @param category
*/
public void add(Category category);
/**
* 删除
*
* @param id
*/
public void delete(int id);
/**
* 修改
*
* @param bean
*/
public void update(Category category);
/**
* 根据id获取
*
* @param id
* @return
*/
public Category get(int id);
/**
* 分页查询
*
* @param start
* @param count
* @return
*/
public List<Category> list(int start, int count);
/**
* 查询所有
*
* @return
*/
public List<Category> list();
/**
* 获取总数
*
* @return
*/
public int getTotal();
}
```
# 实现CategoryDaoImpl
```
package com.dodoke.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.dodoke.bean.Category;
import com.dodoke.dao.inter.CategoryDao;
import com.dodoke.util.DBUtil;
public class CategoryDaoImpl implements CategoryDao {
@Override
public void add(Category category) {
String sql = "insert into t_category values(null,?)";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setString(1, category.getName());
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
int id = rs.getInt(1);
category.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void delete(int id) {
String sql = "delete from t_category where id = " + id;
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void update(Category category) {
String sql = "update t_category set name= ? where id = ?";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setString(1, category.getName());
ps.setInt(2, category.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public Category get(int id) {
Category category = null;
String sql = "select * from t_category where id = " + id;
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ResultSet rs = ps.executeQuery(sql);
if (rs.next()) {
category = new Category();
String name = rs.getString("name");
category.setName(name);
category.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
return category;
}
@Override
public List<Category> list(int start, int count) {
List<Category> categorys = new ArrayList<Category>();
String sql = "select * from t_category order by id desc limit ?,? ";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Category category = new Category();
int id = rs.getInt("id");
String name = rs.getString("name");
category.setId(id);
category.setName(name);
categorys.add(category);
}
} catch (SQLException e) {
e.printStackTrace();
}
return categorys;
}
@Override
public List<Category> list() {
// 利用现有的分页方法,获取所有数据。至于short.MAX_VALUE数值足够大,不够再说
return list(0, Short.MAX_VALUE);
}
@Override
public int getTotal() {
int total = 0;
String sql = "select count(*) from t_category";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return total;
}
}
```
- 项目简介
- 功能一览
- 前台
- 后台
- 开发流程
- 需求分析-展示
- 首页
- 产品页
- 分类页
- 搜索结果页
- 购物车查看页
- 结算页
- 确认支付页
- 支付成功页
- 我的订单页
- 确认收货页
- 评价页
- 页头信息展示
- 需求分析-交互
- 分类页排序
- 立即购买
- 加入购物车
- 调整订单项数量
- 删除订单项
- 生成订单
- 订单页功能
- 确认付款
- 确认收货
- 提交评价信息
- 登录
- 注册
- 退出
- 搜索
- 前台需求列表
- 需求分析后台
- 分类管理
- 属性管理
- 产品管理
- 产品图片管理
- 产品属性设置
- 用户管理
- 订单管理
- 后台需求列表
- 表结构设计
- 数据建模
- 表与表之间的关系
- 实体类设计
- DAO类设计
- 工具类
- CategoryDao设计
- Service业务类设计
- 后台-分类管理
- 可运行的项目
- 静态资源
- FILTER配合SERVLET
- JSP包含关系
- 查询
- 分页
- 增加
- 删除
- 编辑
- 修改
- 后台其他管理
- 属性管理
- 产品管理
- 产品图片管理
- 产品属性值设置
- 用户管理
- 订单管理