版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/85613011
登录系统后台,点击公告管理,如图所示:
可以看到公告管理中有添加公告以及删除公告两个功能,但是除了这两个功能以外还应该实现查看公告详细情况的功能,另外公告的查询也必须实现,一共是四个基本功能
功能实现的顺序是:持久层——dao层——service层——controller层——jsp层
一、实现持久层
在com.po包中创建持久化类Notice,其详细代码如下所示:
package com.po;
public class Notice {
private Integer id;
private String ntitle;
private String ncontent;
private String ntime;//YYYY-MM-DD HH:MM:SS
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNtitle() {
return ntitle;
}
public void setNtitle(String ntitle) {
this.ntitle = ntitle;
}
public String getNcontent() {
return ncontent;
}
public void setNcontent(String ncontent) {
this.ncontent = ncontent;
}
public String getNtime() {
return ntime;
}
public void setNtime(String ntime) {
this.ntime = ntime;
}
}
二、实现dao层
dao层是由dao层接口AdminNoticeDao,以及同名的数据库映射文件组成的
接口AdminNotice详细代码如下所示:
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.po.Notice;
@Repository("adminNoticeDao")
@Mapper
public interface AdminNoticeDao {
public int addNotice(Notice notice);
public List<Notice> deleteNoticeSelect();
public int deleteNotice(Integer id);
public Notice selectANotice(Integer id);
}
其接口中包含了四个方法,添加公告,删除后查询公告,删除公告,查询单个公告
其对应的映射文件详细代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.AdminNoticeDao">
<select id="deleteNoticeSelect" resultType="Notice">
select * from noticetable
</select>
<select id="selectANotice" resultType="Notice" parameterType="Integer">
select * from noticetable where id = #{id}
</select>
<delete id="deleteNotice" parameterType="Integer">
delect from noticetable where id = #{id}
</delete>
<insert id="addNotice" parameterType="Notice">
insert into noticetable(id,ntitle,ncontent,ntime)
values(null,#{ntitle},#{ncontent},now())
</insert>
</mapper>
上面的映射文件对应dao层接口的四个方法,对应编写了四个mysql语句
三、service层实现
此层由service接口AdminNoticeService和其实现类组成,
其接口文件详细代码如下所示:
package com.service.admin;
import org.springframework.ui.Model;
import com.po.Notice;
public interface AdminNoticeService {
public String addNotice(Notice notice);
public String deleteNoticeSelect(Model model);
public String selectANotice(Model model,Integer id);
public String deleteNotice(Integer id);
}
接口中有四个方法,和dao层接口中的四个方法一一对应
其对应的接口实现类详细代码如下所示:
package com.service.admin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import com.dao.AdminNoticeDao;
import com.po.Notice;
@Service("adminNoticeService")
@Transactional
public class AdminNoticeServiceImpl implements AdminNoticeService {
@Autowired
private AdminNoticeDao adminNoticeDao;
@Override
public String addNotice(Notice notice) {
adminNoticeDao.addNotice(notice);
return "forward:/adminNotice/deleteNoticeSelect";
}
@Override
public String deleteNoticeSelect(Model model) {
model.addAttribute("allNotice", adminNoticeDao.deleteNoticeSelect());
return "admin/deleteNoticeSelect";
}
@Override
public String selectANotice(Model model, Integer id) {
model.addAttribute("notice", adminNoticeDao.selectANotice(id));
return "admin/noticeDetail";
}
@Override
public String deleteNotice(Integer id) {
adminNoticeDao.deleteNotice(id);
return "forward:/adminNotice/deleteNoticeSelect";
}
}
在接口实现类中我们可以看到,添加公告和删除公告后都转向查询所有公告,并由deleteNoticeSelect 查询。而查询一个公告的方法则是跳转到公告详情页面。
四、实现controller层
在com.controller.admin包中创建AdminNoticeController,其详细代码如下所示:
package com.controller.admin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import com.po.Notice;
import com.service.admin.AdminNoticeService;
@Controller
@RequestMapping("/adminNotice")
public class AdminNoticeController extends BaseController{
@Autowired
private AdminNoticeService adminNoticeService;
@RequestMapping("/toAddNotice")
public String toAddNotice(Model model) {
model.addAttribute("notice", new Notice());
return "admin/addNotice";
}
@RequestMapping("/addNotice")
public String addNotice(@ModelAttribute Notice notice) {
return adminNoticeService.addNotice(notice);
}
@RequestMapping("/deleteNoticeSelect")
public String deleteNoticeSelect(Model model) {
return adminNoticeService.deleteNoticeSelect(model);
}
@RequestMapping("/selectANotice")
public String selectANotice(Model model, Integer id) {
return adminNoticeService.selectANotice(model, id);
}
@RequestMapping("/deleteNotice")
public String deleteNotice(Integer id) {
return adminNoticeService.deleteNotice(id);
}
}
五、jsp层实现
需要创建三个jsp文件,分别是deleteNotice.jsp addNotice.jsp noticeDetail.jsp
至于代码因为太长,所以就不列举了。
将上述所有代码保存,重启tomcat服务器,情况如图: