1. pojo 根据数据库设计创建实体类
-
包括属性、实体间关系和 set&get 方法
-
public class Topic { private Integer id; private String title; private String content; private Date topicDate; private UserBasic author; // M:1 private List<Reply> replyList; // 1:N public Topic(){} public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } ... }
2. dao 创建实体与数据库交互的接口 DAO 与实现类 DAOImpl
-
先创建接口,功能不用急着补全,后续可以根据需要添加
-
public interface TopicDAO { // 获取指定用户的所有日志列表 public List<Topic> getTopicList(UserBasic userBasic); // 添加日志 public void addTopic(Topic topic); // 删除日志 public void delTopic(Topic topic); // 获取指定日志的信息 Topic getTopic(Integer id); }
-
再创建实现类,实现类继承 BaseDAO
方便调用工具类的方法与数据库交互 -
实现类也不用急着完善,先写框架,根据需要逐一完成功能
-
DAO 层都是单精度操作,后续 service 业务层会需要多个单精度复杂操作,再根据业务层的需要添加功能。
-
public class TopicDAOImpl extends BaseDAO<Topic> implements TopicDAO { @Override public List<Topic> getTopicList(UserBasic userBasic) { return super.executeQuery("select * from t_topic where author = ?",userBasic.getId()); } @Override public void addTopic(Topic topic) { } @Override public void delTopic(Topic topic) { } @Override public Topic getTopic(Integer id) { return null; } }
3. service 业务层,聚焦于具体业务,如,用户登录,登录后显示主页需要哪些信息 -- 用户日志、好友列表 -- 之类的具体功能
-
service 层主要通过使用 DAO 层提供的单精度方法完成具体业务
-
service 层也需要先写接口 Service 再写实现类 ServiceImpl
-
public class TopicServiceImpl implements TopicService { private TopicDAO topicDAO = null; // 根据用户 userBasic 查询用户的日志 @Override public List<Topic> getTopicList(UserBasic userBasic) { return topicDAO.getTopicList(userBasic); } }
4. bean 容器,通过配置外部文件的方式存储各层信息以及层间依赖,降低层间耦合
-
bean 容器的内容是根据 DAO 、Service 和 Controller 层逐渐添加的,有一个 DAO 或 Service 的实现类就添加一个 bean,然后组装 bean 之间的依赖关系
-
<beans> <bean id="userBasicDAO" class="com.atguigu.qqzone.impl.UserBasicDAOImpl"></bean> <bean id="topicDAO" class="com.atguigu.qqzone.impl.TopicDAOImpl"></bean> <bean id="userService" class="com.atguigu.qqzone.service.impl.UserBasicServiceImpl"> <property name="userBasicDAO" ref="userBasicDAO"/> </bean> <bean id="topicServic" class="com.atguigu.qqzone.service.impl.TopicServiceImpl"> <property name="topicDAO" ref="topicDAO"/> </bean> </beans>