您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Spring整合Spring-MVC与MyBatis实现新闻发布系统
第24章Spring整合SpringMVC与MyBatis实现新闻发布系统目录12系统概述及需求分析数据库设计34系统环境搭建系统配置文件56创建实体类创建DAO接口及动态提供类7创建Service接口及实现类8开发新闻发布系统各功能模块24.1系统概述及需求分析3本章实现的是一个简易的新闻发布系统,主要分为两个部分:前台与后台。在前台,未登录用户可以通过选择主题,分页查看该主题的所有新闻标题,单击新闻标题可浏览新闻详细内容;登录用户还可以发表评论。在后台,管理员可以对主题和新闻进行管理,具体包括新闻管理、主题管理、评论管理和用户管理。管理员在后台添加的新闻,前台的新闻列表会自动更新。24.1系统概述及需求分析4新闻发布系统中普通用户和管理员的用例图分别如图24-1和图24-2所示。24.1系统概述及需求分析5根据系统需求分析,可以得到系统的模块结构,如图24-3所示。24.2数据库设计6数据库设计是系统设计中非常重要的一个环节,数据是设计的基础,直接决定系统的成败。如果数据库设计不合理、不完善,将在系统开发中,甚至到后期的维护时,引起严重的问题。根据系统需求,创建了7张表,如下所示:(1)主题表(topic):用于记录新闻主题。(2)新闻信息表(newsinfo):用于记录新闻相关信息。(3)新闻评论表(comment):用于记录新闻评论信息。(4)用户信息表(users):用于记录新闻前台的用户信息。(5)管理员信息表(admin):用于记录管理员的信息。(6)系统功能表(functions):用于记录系统可供使用的功能菜单。(7)权限表(powers):用于记录各管理员所拥有的系统功能。24.2数据库设计7其中,主题表(topic)的字段说明如表24-1所示。新闻信息表(newsinfo)的字段说明如表24-2所示。24.2数据库设计8新闻评论表(comment)的字段说明如表24-3所示。用户信息表(users)的字段说明如表24-4所示。24.2数据库设计9管理员信息表(admin)的字段说明如表24-5所示。系统功能表(functions)的字段说明如表24-6所示。24.2数据库设计10权限表(powers)的字段说明如表24-7所示。创建数据表后,设计数据表之间的关系,如图24-4所示。24.3系统环境搭建11在第21章的21.8小节中,以用户登录为例详细介绍了Spring整合SpringMVC与MyBatis,读者可参照完成新闻发布系统的框架搭建。当然,读者也可以直接将21.8小节创建的项目springmvc_ssm复制一份并重新命名为news,再导入到MyEclipse中。为避免部署重复,需要修改项目的部署名称。修改过程如下:在MyEclipse中右击项目news,依次选择“PropertiesMyEclipseDeploymentAssembly”,将WebContextRoot修改为“news”即可。然后将jackson-annotations-2.6.0.jar、jackson-core-2.6.0.jar和jackson-databind-2.6.0.jar这三个jar包复制到项目的WebRoot\WEB-INF\lib目录中,用于支持SpringMVC实现自动Json格式数据转换。24.3系统环境搭建12新闻发布系统的目录结构如图24-5所示,其中com.news.pojo包用于存放实体类,com.news.dao包用于存放数据访问层接口,com.news.dao.provider包用于存放构建动态SQL语句的类,com.news.service包用于存放业务逻辑层接口,com.news.service.impl包用于存放业务逻辑层接口的实现类,com.news.controller包用于存放控制器类,com.news.interceptor包用于存放登录权限验证的拦截器类。24.4系统配置文件13Spring使用的配置文件为applicationContext.xml,SpringMVC使用的配置文件为springmvc.xml,这些配置文件的含义在第21章的21.8小节中已具体介绍过,由于篇幅,在此不再赘述。24.5创建实体类14在com.news.pojo包中,依次创建实体类Topic.java、Newsinfo.java、Comment.java、Users.java、Admin.java、Functions.java、Powers.java、Pager.java和TreeNode.java。24.6创建DAO接口及动态提供类15在com.news.dao包中,依次创建数据访问层接口TopicDAO.java、NewsinfoDAO.java、CommentDAO.java、UserDAO.java、AdminDAO.java、FunctionDAO.java。在这些DAO接口中基于MyBatis注解完成数据库的操作。24.6创建DAO接口及动态提供类16在接口TopicDAO中声明如下方法://根据id查询新闻主题TopicselectById(intid);//查询所有新闻主题ListTopicselectAllTopic();//分页动态查询ListTopicselectByPage(MapString,Objectparams);//根据条件动态查询主题总记录数Integercount(MapString,Objectparams);//添加主题intsave(Topictopic);//修改主题voidedit(Topictopic);24.6创建DAO接口及动态提供类17在接口NewsinfoDAO中声明如下方法://根据条件查询新闻总数Integercount(MapString,Objectparams);//分页动态查询ListNewsinfoselectByPage(MapString,Objectparams);//根据主题获取前5条新闻ListNewsinfoselectTop5ByTid(inttid);//根据新闻编号获取新闻对象NewsinfoselectById(intid);//添加新闻voidsave(Newsinfoni);//修改新闻voidedit(Newsinfoni);//删除新闻voiddeleteById(intid);24.6创建DAO接口及动态提供类18在接口CommentDAO中声明如下方法://添加评论voidsave(Commentcomment);//根据新闻编号,分页动态查询该新闻的评论ListCommentselectByPage(MapString,Objectparams);//根据条件查询评论总数Integercount(MapString,Objectparams);//根据新闻id删除评论voiddeleteByNid(intnid);//评论审核voidupdateState(@Param(ids)Stringids);//删除评论voiddeleteByIds(@Param(ids)Stringids);24.6创建DAO接口及动态提供类19在接口UserDAO中声明如下方法://添加用户intsave(Usersuser);//根据登录名和密码查询合法用户publicUsersselectByLoginNameAndPwd(@Param(loginName)StringloginName,@Param(loginPwd)StringloginPwd);//根据用户编号获取用户对象UsersselectById(intid);//获取所有用户ListUsersselectAll();//根据登录名,分页动态查询用户ListUsersselectByPage(MapString,Objectparams);//根据条件查询用户总数Integercount(MapString,Objectparams);//更新用户状态voidupdateState(@Param(ids)Stringids,@Param(flag)intflag);24.6创建DAO接口及动态提供类20在接口AdminDAO中声明如下方法://根据登录名和密码查询用户publicAdminselectByLoginNameAndPwd(@Param(loginName)StringloginName,@Param(loginPwd)StringloginPwd);//根据管理员id获取管理员对象及关联的功能集合AdminselectById(Integerid);在接口FunctionDAO中声明如下方法:publicListFunctionsselectByAdminId(Integeraid);24.7创建Service接口及实现类21在com.news.service包中,创建业务逻辑层接口TopicService.java、NewsinfoService.java、CommentService.java、AdminService.java和UserService.java。24.7创建Service接口及实现类22在接口TopicService中声明如下方法:ListTopicselectAllTopic();ListTopicfindTopic(Topictopic,Pagerpager);Integercount(MapString,Objectparams);publicintaddTopic(Topictopic);voidmodify(Topictopic);publicListTopicgetAllTopic();在接口NewsinfoService中声明如下方法://前台分页获得新闻ListNewsinfofindNewsinfo(Newsinfonewsinfo,Pagerpager);ListNewsinfoselectTop5ByTid(inttid);NewsinfoselectById(intid);//后台新闻列表ListNewsinfofindNewsinfoForBackstage(Newsinfonewsinfo,Pagerpager);Integercount(MapString,Objectparams);publicvoidaddNewsinfo(Newsinfoni);voidmodify(Newsinfoni);voidremoveNewsinfoById(intid);24.7创建Service接口及实现类23在接口CommentService中声明如下方法:publicvoidaddComment(Commentcomment);ListCommentfindComment(Commentcomment,Pagerpager);Integercount(MapString,Objectparams);voidremoveCommentByNid(intnid);publicListCommentfindCommentForBackstage(Commentcomment,Pagerpager);voidmodifyStatus(Stringids);voiddeleteCommentByIds(Stringids);在接口AdminService中声明如下方法:publicAdminlogin(StringloginName,StringloginPwd);publicAdmingetAdminAndFunctions(Integerid);24.7创建Service接口及实现类24在接口UserService中声明如下方法:publicintaddUser(Usersuser);publicUserslogin(StringloginName,StringloginP
本文标题:Spring整合Spring-MVC与MyBatis实现新闻发布系统
链接地址:https://www.777doc.com/doc-7182141 .html