(SSM练习)网上商城项目(十)——公告管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 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服务器,情况如图:

猜你喜欢

转载自blog.csdn.net/qq_40788630/article/details/85613011