菜鸡学习之SSM整合之不带ajax

一、CRUD简介

(1)什么是CRUD
CRUD:Create( 创 建 ) Retrieve(查询) Update(更新) Delete(删除)
在这里插入图片描述

(2)使用了什么技术
ssm:SpringMVC+Spring+MyBatis
(3)版本
V1 : ssm
V2 : ssm+Ajax
V3 : ssm+Ajax+bootstrap

二、 数据库准备

		create database crud;
		use crud;
		set foreign_key_checks=0;
		
        create table `department` (
        `did` int(11) not null auto_increment,
        `dname` varchar(50) default null,
        primary key (`did`)
        ) engine=innodb auto_increment=13 default charset=utf8;

        -- ----------------------------
        -- records of department
        -- ----------------------------
        insert into `department` values ('1', 'java开发部');
        insert into `department` values ('2', '测试部门');
        insert into `department` values ('3', '需求部门');
        insert into `department` values ('4', '前端部门');
        insert into `department` values ('5', '宣传');
        insert into `department` values ('6', '部署');
        insert into `department` values ('7', '维护');
        insert into `department` values ('8', '研发');
        
 		create table `employee` (
        `eid` int(11) not null auto_increment,
        `ename` varchar(30) default null,
        `gender` varchar(4) default null,
        `did` int(11) default null,
        primary key (`eid`),
        key `employee_did` (`did`),
        constraint `employee_did` foreign key (`did`) references `department` (`did`)
        ) engine=innodb auto_increment=8 default charset=utf8;


        insert into `employee` values ('1', '张三', '男', '1');
        insert into `employee` values ('2', '李四', '男', '1');
        insert into `employee` values ('3', '王五', '男', '1');
        insert into `employee` values ('4', '赵六', '女', '1');
        insert into `employee` values ('5', '我是测试', '女', '2');
        insert into `employee` values ('6', '我进行需求跟踪', '女', '3');
        insert into `employee` values ('7', '我开发前端', '女', '4');

在这里插入图片描述

三、完成功能

1.后台代码

1.1创建测试类TestDepartmentService

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestDepartmentService {
    private static final Logger l = LoggerFactory.getLogger(TestDepartmentService.class);
    @Autowired
    IDepartmentService service;

    @Test
    public void test01() {
        List<Department> list = service.findAllDepartments();
        l.info("获取部门列表: list=" + list);
    }
}

1.2 service层接口和实现类
1.2.1 IDepartmentService

public interface IDepartmentService {
    //查询所有的部门数据 显示成列表
    List<Department> findAllDepartments();``
    //添加一个新的部门
    void saveDepartment(Department dept);
    //删除指定id的部门数据
    void deleteDepartmentById(int did);
    //根据指定id修改部门名称
    void updateDepartmentById(Department dept);
    //查找指定id的部门数据
    Department findDepartmentById(int did);
}

1.2.2 DempartmentServiceImpl

@Service
public class DempartmentServiceImpl implements IDepartmentService {
    @Autowired
    private IDepartmentDao dao;
    @Override
    public List<Department> findAllDepartments() {
        List<Department> list = dao.findAll();
        return list;
    }

    @Override
    public void saveDepartment(Department dept) {
        dao.save(dept);
    }

    @Override
    public void deleteDepartmentById(int id) {
        dao.deleteById(id);
    }

    @Override
    public void updateDepartmentById(Department dept) {
        dao.update(dept);
    }

    @Override
    public Department findDepartmentById(int did) {
        return dao.findById(did);
    }
}

1.3 dao接口和映射文件
1.3.1 IDepartmentDao

@Repository
public interface IDepartmentDao {
    //select * from department order by did asc;
    List<Department> findAll();

    //insert into department values(null,'UI');
    void save(Department dept);
    //delete from department where did = 5;
    void deleteById(int id);

    //update department set dname = ? where did = 1;
    void update(Department dept);

    //select * from department where did = 1;
    Department findById(int did);
}

1.3.2 IDepartmentDao .xml

<?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.xgf.dao.IDepartmentDao">

    <select id="findAll" resultType="department">
        select * from department order by did asc;
    </select>

    <insert id="save" parameterType="department">
        insert into department values(null,#{dname});
    </insert>

    <delete id="deleteById" parameterType="int">
        delete from department where did =#{id};
    </delete>


    <update id="update" parameterType="department">
        update department set dname = #{dname} where did = #{did};
    </update>


    <select id="findById" parameterType="int" resultType="department">
        select * from department where did = #{did};
    </select>
</mapper>

1.4 测试能否查询到所有的部门
在这里插入图片描述
1.5 DepartmentController

@Controller
@RequestMapping("/dept")
public class DepartmentController {
    //slf4j
    private static  final Logger l = LoggerFactory.getLogger(DepartmentController.class);
    @Autowired
    private IDepartmentService iDepartmentService;

    //查询所有部门并跳转页面显示
    @RequestMapping(path = "/deptlist",method = RequestMethod.GET)
    public String list(Model model){
        List<Department> depts = iDepartmentService.findAllDepartments();
        l.info("部门deptlist列表:   depts="+depts);
        //数据添加到页面
        model.addAttribute("depts",depts);
        return "list_depts";
    }

//一般修改都有回显界面(增加、删除、更新),查询不需要回显页面,就是新出一个页面供你更改数据
    //回显就是两个方法,先查询显示,再修改(两个sql)

    //跳转新增保存部门的回显页面
    @RequestMapping(path="/saveDeptUI",method = RequestMethod.GET)
    public String saveDeptUI(){
        l.info("跳转saveDeptUI回显页面,进行数据修改 ");
        return "saveDeptUI";
    }
    //新增保存部门
    @RequestMapping(path ="/saveDept",method = {RequestMethod.POST})
    public String save(Department dept,Model model){
        if (dept.getDname() != null && !"".equals(dept.getDname())) {
            iDepartmentService.saveDepartment(dept);
            l.info("saveDept 保存信息: dept="+dept);
            return "redirect:/dept/deptlist";
        }else{
            model.addAttribute("error_msg","部门名称不能为空");
            return "forward:/error_saveDept.jsp";    //错误,部门为空不能增加跳转错误界面
        }
    }

    //删除部门
    @RequestMapping(path = "/deleteDept",method = RequestMethod.GET)
    public String delete(Integer did){
        l.info("deleteDept 删除部门  did = "+did);
        iDepartmentService.deleteDepartmentById(did);
        return "redirect:/dept/deptlist";   //删除之后再查询所有显示
    }

    //更新
    // 跳转更新回显页面 updateUI?did=23
    @RequestMapping(path = "/updateDeptUI",method = RequestMethod.GET)
    public String updateUI(Integer did,Model model){
        l.info("updateDeptUI 更新部门的 did = "+did);
        Department department = iDepartmentService.findDepartmentById(did);
        model.addAttribute("dept",department);
        return "update_deptUI";
    }

    //进行更新操作
    @RequestMapping(path="/updateDept",method = RequestMethod.POST)
    public String update(Department dept){
        //打印
        l.info("updateDept 更新信息: dept="+dept);
        //调用service
        iDepartmentService.updateDepartmentById(dept);
        //跳到查询页面
        return "redirect:/dept/deptlist";
    }

}

2.前台页面

2.1 显示全部部门 list_depts.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
        <html>
<head>
    <title>部门crud</title>
</head>
<body>

<a href="${pageContext.request.contextPath}/dept/saveDeptUI">新增部门</a>
<br/>
<table border="1px" width="100%">
    <tr>
        <td>序号</td>
        <td>部门编号</td>
        <td>部门名称</td>
        <td>操作</td>

    </tr>

    <c:forEach items="${depts}" var="dept" varStatus="vs">
         <tr>
             <td>${vs.index+1}</td>
             <td>${dept.did}</td>
             <td>${dept.dname}</td>
             <%-- 携带id过去进行删除和更新 --%>
             <td><a href="${pageContext.request.contextPath}/dept/deleteDept?did=${dept.did}">删除</a> | <a href="${pageContext.request.contextPath}/dept/updateDeptUI?did=${dept.did}">修改</a></td>
         </tr>
    </c:forEach>
</table>
</body>
</html>

2.2新增回显页面saveDeptUI

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>添加部门</title>
</head>
<body>
    <form method="post" action="${pageContext.request.contextPath}/dept/saveDept">
        <input type="text" name="dname" placeholder="请输入您要新增的部门名称"/><br/>
        <input type="submit" value="保存"/>      &emsp;&emsp;&emsp;
        <input type="reset" value="重置"/><br/>

    </form>
    <a href="${pageContext.request.contextPath}/dept/deptlist">返回部门列表页面</a>
</body>
</html>

2.3更新回显页面update_deptUI

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>修改部门</title>
</head>
<body>
       <%-- form表单,不会将标记为disabled="disabled"作为参数提交到后台
         通过添加一个type="hidden"的input标签来传递id数据 --%>
    <form method="post" action="${pageContext.request.contextPath}/dept/updateDept">
        <input type="hidden" name="did" value="${dept.did}" >
        <input type="text"  value="${dept.did}" disabled="disabled"/><br/>
        <input type="text" name="dname" value="${dept.dname}"/><br/>
        <input type="submit" value="保存修改"/><br/>
    </form>
        <a href="${pageContext.request.contextPath}/dept/deptlist">返回部门列表页面</a>
</body>
</html>

2.4更新错误页面(error_saveDept.jsp)不能保存空字符串

 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>错误页面</title>
</head>
<body>
<font color="red">${error_msg}</font>
<br/><br/>
<a href="${pageContext.request.contextPath}/dept/saveDeptUI">返回新增</a><br/>
<a href="${pageContext.request.contextPath}/dept/deptlist">返回部门列表页面</a>
</body>
</html>

2.5实现效果
界面

新增
修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值