QQZone2 - 大致流程

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>
    

5. contoller 控制层,请求与响应

posted @   LaViez  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示