Spring整合Spring MVC与MyBatis实现新闻发布系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
24.1 系统概述及需求分析
新闻发布系统中普通用户和管理员的用例图分别如图24-1和 图24-2所示。
4
24.1 系统概述及需求分析
根据系统需求分析,可以得到系统的模块结构,如图24-3所 示。
5
24.2 数据库设计百度文库
数据库设计是系统设计中非常重要的一个环节,数据是设计 的基础,直接决定系统的成败。如果数据库设计不合理、不完 善,将在系统开发中,甚至到后期的维护时,引起严重的问题 。根据系统需求,创建了7张表,如下所示:
21
24.7 创建Service接口及实现类
在接口TopicService中声明如下方法:
List<Topic> selectAllTopic();
List<Topic> findTopic(Topic topic,Pager pager);
Integer count(Map<String, Object> params);
public void addNewsinfo(Newsinfo ni);
void modify(Newsinfo ni);
void removeNewsinfoById(int id);
22
24.7 创建Service接口及实现类
在接口CommentService中声明如下方法:
public void addComment(Comment comment); List<Comment> findComment(Comment comment, Pager pager); Integer count(Map<String, Object> params); void removeCommentByNid(int nid); public List<Comment> findCommentForBackstage(Comment comment, Pager pager); void modifyStatus(String ids); void deleteCommentByIds(String ids);
19
24.6 创建DAO接口及动态提供类
在接口AdminDAO中声明如下方法:
// 根据登录名和密码查询用户 public Admin selectByLoginNameAndPwd(@Param("loginName") String loginName, @Param("loginPwd") String loginPwd); // 根据管理员id获取管理员对象及关联的功能集合 Admin selectById(Integer id);
17
24.6 创建DAO接口及动态提供类
在接口CommentDAO中声明如下方法:
// 添加评论 void save(Comment comment); // 根据新闻编号,分页动态查询该新闻的评论 List<Comment> selectByPage(Map<String, Object> params); // 根据条件查询评论总数 Integer count(Map<String, Object> params); // 根据新闻id删除评论 void deleteByNid(int nid); // 评论审核 void updateState(@Param("ids") String ids); // 删除评论 void deleteByIds(@Param("ids") String ids);
List<Newsinfo> selectTop5ByTid(int tid);
Newsinfo selectById(int id);
// 后台新闻列表
List<Newsinfo> findNewsinfoForBackstage(Newsinfo newsinfo,Pager
pager);
Integer count(Map<String, Object> params);
6
24.2 数据库设计
其中,主题表(topic)的字段说明如表24-1所示。 新闻信息表(newsinfo)的字段说明如表24-2所示。
7
24.2 数据库设计
新闻评论表(comment)的字段说明如表24-3所示。
用户信息表(users)的字段说明如表24-4所示。
8
24.2 数据库设计
管理员信息表(admin)的字段说明如表24-5所示。 系统功能表(functions)的字段说明如表24-6所示。
public int addTopic(Topic topic);
void modify(Topic topic);
public List<Topic> getAllTopic();
在接口NewsinfoService中声明如下方法:
// 前台分页获得新闻
List<Newsinfo> findNewsinfo(Newsinfo newsinfo,Pager pager);
(1) 主题表(topic):用于记录新闻主题。 (2) 新闻信息表(newsinfo):用于记录新闻相关信息。 (3) 新闻评论表(comment):用于记录新闻评论信息。 (4) 用户信息表(users):用于记录新闻前台的用户信息。 (5) 管理员信息表(admin):用于记录管理员的信息。 (6) 系统功能表(functions):用于记录系统可供使用的功能菜单。 (7) 权限表(powers):用于记录各管理员所拥有的系统功能。
18
24.6 创建DAO接口及动态提供类
在接口UserDAO中声明如下方法:
// 添加用户 int save(Users user); // 根据登录名和密码查询合法用户 public Users selectByLoginNameAndPwd(@Param("loginName") String loginName,@Param("loginPwd") String loginPwd); // 根据用户编号获取用户对象 Users selectById(int id); // 获取所有用户 List<Users> selectAll(); // 根据登录名,分页动态查询用户 List<Users> selectByPage(Map<String, Object> params); // 根据条件查询用户总数 Integer count(Map<String, Object> params); // 更新用户状态 void updateState(@Param("ids") String ids, @Param("flag") int flag);
第24章 Spring整合Spring MVC与 MyBatis实现新闻发布系统
目录
1 系统概述及需求分析 2 数据库设计 3 系统环境搭建 4 系统配置文件 5 创建实体类 6 创建DAO接口及动态提供类 7 创建Service接口及实现类 8 开发新闻发布系统各功能模块
24.1 系统概述及需求分析
9
24.2 数据库设计
权限表(powers)的字段说明如表24-7所示。 创建数据表后,设计数据表之间的关系,如图24-4所示。
10
24.3 系统环境搭建
在第21章的21.8小节中,以用户登录为例详细介绍了Spring整合 Spring MVC与MyBatis,读者可参照完成新闻发布系统的框架搭建。 当然,读者也可以直接将21.8小节创建的项目springmvc_ssm复制一 份并重新命名为news,再导入到MyEclipse中。为避免部署重复,需 要修改项目的部署名称。修改过程如下:在MyEclipse中右击项目 news,依次选择“Properties MyEclipse Deployment Assembly”,将Web Context Root修改为“news”即可。然后将 jackson-annotations-2.6.0.jar、jackson-core-2.6.0.jar和jacksondatabind-2.6.0.jar这三个jar包复制到项目的WebRoot\WEB-INF\lib目 录中,用于支持Spring MVC实现自动Json格式数据转换。
15
24.6 创建DAO接口及动态提供类
在接口TopicDAO中声明如下方法:
// 根据id查询新闻主题 Topic selectById(int id); // 查询所有新闻主题 List<Topic> selectAllTopic(); // 分页动态查询 List<Topic> selectByPage(Map<String, Object> params); // 根据条件动态查询主题总记录数 Integer count(Map<String, Object> params); // 添加主题 int save(Topic topic); // 修改主题 void edit(Topic topic);
11
24.3 系统环境搭建
新闻发布系统的目录结构如图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包用于存放登录权限验证的拦截器类。
16
24.6 创建DAO接口及动态提供类
在接口NewsinfoDAO中声明如下方法:
// 根据条件查询新闻总数 Integer count(Map<String, Object> params); // 分页动态查询 List<Newsinfo> selectByPage(Map<String, Object> params); // 根据主题获取前5条新闻 List<Newsinfo> selectTop5ByTid(int tid); // 根据新闻编号获取新闻对象 Newsinfo selectById(int id); // 添加新闻 void save(Newsinfo ni); // 修改新闻 void edit(Newsinfo ni); // 删除新闻 void deleteById(int id);
12
24.4 系统配置文件
Spring使用的配置文件为applicationContext.xml,Spring MVC使用的配置文件为springmvc.xml,这些配置文件的含义在 第21章的21.8小节中已具体介绍过,由于篇幅,在此不再赘述。
13
24.5 创建实体类
在com.news.pojo包中,依次创建实体类Topic.java、 Newsinfo.java、Comment.java、Users.java、Admin.java、 Functions.java、Powers.java、Pager.java和TreeNode.java 。
本章实现的是一个简易的新闻发布系统,主要分为两个部分 :前台与后台。在前台,未登录用户可以通过选择主题,分页 查看该主题的所有新闻标题,单击新闻标题可浏览新闻详细内 容;登录用户还可以发表评论。在后台,管理员可以对主题和 新闻进行管理,具体包括新闻管理、主题管理、评论管理和用 户管理。管理员在后台添加的新闻,前台的新闻列表会自动更 新。
在接口FunctionDAO中声明如下方法:
public List<Functions> selectByAdminId(Integer aid);
20
24.7 创建Service接口及实现类
在com.news.service包中,创建业务逻辑层接口 TopicService.java、NewsinfoService.java、 CommentService.java、AdminService.java和 UserService.java。
14
24.6 创建DAO接口及动态提供类
在com.news.dao包中,依次创建数据访问层接口 TopicDAO.java、NewsinfoDAO.java、CommentDAO.java、 UserDAO.java、AdminDAO.java、FunctionDAO.java。
在这些DAO接口中基于MyBatis注解完成数据库的操作。
24.1 系统概述及需求分析
新闻发布系统中普通用户和管理员的用例图分别如图24-1和 图24-2所示。
4
24.1 系统概述及需求分析
根据系统需求分析,可以得到系统的模块结构,如图24-3所 示。
5
24.2 数据库设计百度文库
数据库设计是系统设计中非常重要的一个环节,数据是设计 的基础,直接决定系统的成败。如果数据库设计不合理、不完 善,将在系统开发中,甚至到后期的维护时,引起严重的问题 。根据系统需求,创建了7张表,如下所示:
21
24.7 创建Service接口及实现类
在接口TopicService中声明如下方法:
List<Topic> selectAllTopic();
List<Topic> findTopic(Topic topic,Pager pager);
Integer count(Map<String, Object> params);
public void addNewsinfo(Newsinfo ni);
void modify(Newsinfo ni);
void removeNewsinfoById(int id);
22
24.7 创建Service接口及实现类
在接口CommentService中声明如下方法:
public void addComment(Comment comment); List<Comment> findComment(Comment comment, Pager pager); Integer count(Map<String, Object> params); void removeCommentByNid(int nid); public List<Comment> findCommentForBackstage(Comment comment, Pager pager); void modifyStatus(String ids); void deleteCommentByIds(String ids);
19
24.6 创建DAO接口及动态提供类
在接口AdminDAO中声明如下方法:
// 根据登录名和密码查询用户 public Admin selectByLoginNameAndPwd(@Param("loginName") String loginName, @Param("loginPwd") String loginPwd); // 根据管理员id获取管理员对象及关联的功能集合 Admin selectById(Integer id);
17
24.6 创建DAO接口及动态提供类
在接口CommentDAO中声明如下方法:
// 添加评论 void save(Comment comment); // 根据新闻编号,分页动态查询该新闻的评论 List<Comment> selectByPage(Map<String, Object> params); // 根据条件查询评论总数 Integer count(Map<String, Object> params); // 根据新闻id删除评论 void deleteByNid(int nid); // 评论审核 void updateState(@Param("ids") String ids); // 删除评论 void deleteByIds(@Param("ids") String ids);
List<Newsinfo> selectTop5ByTid(int tid);
Newsinfo selectById(int id);
// 后台新闻列表
List<Newsinfo> findNewsinfoForBackstage(Newsinfo newsinfo,Pager
pager);
Integer count(Map<String, Object> params);
6
24.2 数据库设计
其中,主题表(topic)的字段说明如表24-1所示。 新闻信息表(newsinfo)的字段说明如表24-2所示。
7
24.2 数据库设计
新闻评论表(comment)的字段说明如表24-3所示。
用户信息表(users)的字段说明如表24-4所示。
8
24.2 数据库设计
管理员信息表(admin)的字段说明如表24-5所示。 系统功能表(functions)的字段说明如表24-6所示。
public int addTopic(Topic topic);
void modify(Topic topic);
public List<Topic> getAllTopic();
在接口NewsinfoService中声明如下方法:
// 前台分页获得新闻
List<Newsinfo> findNewsinfo(Newsinfo newsinfo,Pager pager);
(1) 主题表(topic):用于记录新闻主题。 (2) 新闻信息表(newsinfo):用于记录新闻相关信息。 (3) 新闻评论表(comment):用于记录新闻评论信息。 (4) 用户信息表(users):用于记录新闻前台的用户信息。 (5) 管理员信息表(admin):用于记录管理员的信息。 (6) 系统功能表(functions):用于记录系统可供使用的功能菜单。 (7) 权限表(powers):用于记录各管理员所拥有的系统功能。
18
24.6 创建DAO接口及动态提供类
在接口UserDAO中声明如下方法:
// 添加用户 int save(Users user); // 根据登录名和密码查询合法用户 public Users selectByLoginNameAndPwd(@Param("loginName") String loginName,@Param("loginPwd") String loginPwd); // 根据用户编号获取用户对象 Users selectById(int id); // 获取所有用户 List<Users> selectAll(); // 根据登录名,分页动态查询用户 List<Users> selectByPage(Map<String, Object> params); // 根据条件查询用户总数 Integer count(Map<String, Object> params); // 更新用户状态 void updateState(@Param("ids") String ids, @Param("flag") int flag);
第24章 Spring整合Spring MVC与 MyBatis实现新闻发布系统
目录
1 系统概述及需求分析 2 数据库设计 3 系统环境搭建 4 系统配置文件 5 创建实体类 6 创建DAO接口及动态提供类 7 创建Service接口及实现类 8 开发新闻发布系统各功能模块
24.1 系统概述及需求分析
9
24.2 数据库设计
权限表(powers)的字段说明如表24-7所示。 创建数据表后,设计数据表之间的关系,如图24-4所示。
10
24.3 系统环境搭建
在第21章的21.8小节中,以用户登录为例详细介绍了Spring整合 Spring MVC与MyBatis,读者可参照完成新闻发布系统的框架搭建。 当然,读者也可以直接将21.8小节创建的项目springmvc_ssm复制一 份并重新命名为news,再导入到MyEclipse中。为避免部署重复,需 要修改项目的部署名称。修改过程如下:在MyEclipse中右击项目 news,依次选择“Properties MyEclipse Deployment Assembly”,将Web Context Root修改为“news”即可。然后将 jackson-annotations-2.6.0.jar、jackson-core-2.6.0.jar和jacksondatabind-2.6.0.jar这三个jar包复制到项目的WebRoot\WEB-INF\lib目 录中,用于支持Spring MVC实现自动Json格式数据转换。
15
24.6 创建DAO接口及动态提供类
在接口TopicDAO中声明如下方法:
// 根据id查询新闻主题 Topic selectById(int id); // 查询所有新闻主题 List<Topic> selectAllTopic(); // 分页动态查询 List<Topic> selectByPage(Map<String, Object> params); // 根据条件动态查询主题总记录数 Integer count(Map<String, Object> params); // 添加主题 int save(Topic topic); // 修改主题 void edit(Topic topic);
11
24.3 系统环境搭建
新闻发布系统的目录结构如图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包用于存放登录权限验证的拦截器类。
16
24.6 创建DAO接口及动态提供类
在接口NewsinfoDAO中声明如下方法:
// 根据条件查询新闻总数 Integer count(Map<String, Object> params); // 分页动态查询 List<Newsinfo> selectByPage(Map<String, Object> params); // 根据主题获取前5条新闻 List<Newsinfo> selectTop5ByTid(int tid); // 根据新闻编号获取新闻对象 Newsinfo selectById(int id); // 添加新闻 void save(Newsinfo ni); // 修改新闻 void edit(Newsinfo ni); // 删除新闻 void deleteById(int id);
12
24.4 系统配置文件
Spring使用的配置文件为applicationContext.xml,Spring MVC使用的配置文件为springmvc.xml,这些配置文件的含义在 第21章的21.8小节中已具体介绍过,由于篇幅,在此不再赘述。
13
24.5 创建实体类
在com.news.pojo包中,依次创建实体类Topic.java、 Newsinfo.java、Comment.java、Users.java、Admin.java、 Functions.java、Powers.java、Pager.java和TreeNode.java 。
本章实现的是一个简易的新闻发布系统,主要分为两个部分 :前台与后台。在前台,未登录用户可以通过选择主题,分页 查看该主题的所有新闻标题,单击新闻标题可浏览新闻详细内 容;登录用户还可以发表评论。在后台,管理员可以对主题和 新闻进行管理,具体包括新闻管理、主题管理、评论管理和用 户管理。管理员在后台添加的新闻,前台的新闻列表会自动更 新。
在接口FunctionDAO中声明如下方法:
public List<Functions> selectByAdminId(Integer aid);
20
24.7 创建Service接口及实现类
在com.news.service包中,创建业务逻辑层接口 TopicService.java、NewsinfoService.java、 CommentService.java、AdminService.java和 UserService.java。
14
24.6 创建DAO接口及动态提供类
在com.news.dao包中,依次创建数据访问层接口 TopicDAO.java、NewsinfoDAO.java、CommentDAO.java、 UserDAO.java、AdminDAO.java、FunctionDAO.java。
在这些DAO接口中基于MyBatis注解完成数据库的操作。