Spring+SpringMVC+MyBatis整合(SSM框架)实现增删改查等操作(续)

接上篇,我们完成了ssm框架的基本操作。现在,我们来实现框架内的增删改查。

具体代码可参考上篇文章

项目结构:

1.删除操作
1)先写mapper接口

CustomerMapper:

int deleteById(int id);
2)service服务层
2.1)service接口

与mapper接口基本一致,CustomerService:

int deleteById(int id);
2.2) service接口实现类

CustomerServiceImpl

@Override
public int deleteById(int id) {
    return customerMapper.deleteById(id);
}

3)mapper 

我们需要配置CustomerMapper.xml来实现mapper中的增删改查等方法。

<delete id="deleteById" parameterType="integer">
    delete from customer where  id=#{id}
</delete>
4)junit4测试
@Test
public void deleteById() {
    int rows = customerService.deleteById(11);//你想删除的顾客的id
    System.out.println(rows);
}

 通过测试发现测试成功。成功后我们就可以编写controller控制层了。

5)Controller控制层

CustomerController

 @RequestMapping("/customer/{id}")
    public String deleteCustomer(@PathVariable int id){
        int rows = customerService.deleteById(id);
        return "redirect:/customer/list";
    }

 在写完控制层后只需在上篇文章的基础上修改一下jsp文件就行。

6)list_customer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":"
            + request.getServerPort() + path + "/";
%>

<!DOCTYPE html>
<html>
<head>
    <base href="<%=basePath%>"/>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

    <title>Title</title>
    <link rel="stylesheet" href="bootstrap3.3.7/css/bootstrap.css">
    <script src="js/jquery-3.4.1.js" charset="UTF-8"></script>
</head>
<body>
<div>
    <h1>顾客管理</h1>
    <table class="table table-striped table-hover table-bordered">
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>职业</th>
            <th>手机号码</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${list}" var="customer" varStatus="status">
            <tr>
                <td>${customer.id}</td>
                <td>${customer.username}</td>
                <td>${customer.jobs}</td>
                <td>${customer.phone}</td>
                <td>
                    <a class="btn btn-danger" href="/customer/${customer.id}" >删除</a>
                    <a class="btn btn-primary">编辑</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</div>
</body>
</html>

这样,我们的删除操作就写好了。 

我们来测试一下。

删除前:

点击删除:

我们发现 “jack” 的数据已经被删除了,这样我们的删除操作就完成了。

2.新增操作

在新增操作中不仅仅只是新增,还要判断一下顾客是否已经存在,已存在的提示“已存在”,不存在的才可以实现新增。因此,我们就需要一个判断依据,本文以顾客的电话号码作为依据拉力判断。

1)mapper接口

CustomerMapper:通过查询所有的手机号来查看手机号是否存在

int insertCustomer(Customer customer);
Customer findAllByPhone(String phone);
2)service服务层
2.1)service接口

与mapper接口基本一致,CustomerService:因为我们后面实现service方法时要返回string信息,所以为String phone

int insertCustomer(Customer customer);
Customer findAllByPhone(String phone);
2.2) service接口实现类

CustomerServiceImpl

 /**
     * 新增顾客判断手机号是否存在
     * @param customer
     * @return
     */
    @Override
    public String insertCustomer(Customer customer) {
        String msg = "手机号已存在!";
        Customer existCustomer = customerMapper.findAllByPhone(customer.getPhone());
        if (existCustomer == null) {
            customerMapper.insertCustomer(customer);
            msg = "新增成功";
        }
        return msg;
    }

    @Override
    public Customer findAllByPhone(String phone) {
        return customerMapper.findAllByPhone(phone);
    }

3)mapper 

我们需要配置CustomerMapper.xml来实现mapper中的增删改查等方法。

<insert id="insertCustomer" parameterType="njitt.software.orm.pojo.Customer">
    insert into customer (username,jobs,phone)
    values (#{username},#{jobs},#{phone})
</insert>
<select id="findAllByPhone" resultMap="BaseResultMap" parameterType="java.lang.String">
    select *
    from customer
    where phone =#{phone}
</select>
4)junit4测试
 @Test
    public void insertCustomer() {
        Customer customer = new Customer(7,"jack","教师","16562366666");
        String msg = customerService.insertCustomer(customer);
        System.out.println(msg);
    }

测试信息:

 通过测试发现测试成功。成功后我们就可以编写controller控制层了。

5)Controller控制层

CustomerController

@PostMapping("/customer/")
    public ModelAndView insertCustomer(Customer customer){
        ModelAndView modelAndView = new ModelAndView();
        String msg = customerService.insertCustomer(customer);
        modelAndView.addObject("msg",msg);
        modelAndView.setViewName("redirect:/customer/list");
        return modelAndView;
    }

    @RequestMapping("/customer/add")
    public String addCustomer(){
        return  "addCustomer";
    }

 在写完控制层后只需在上篇文章的基础上修改一下jsp文件就行。

6)新增addCustomer.jsp页面 
<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":"
            + request.getServerPort() + path + "/";
%>

<!DOCTYPE html>
<html>
<head>
    <base href="<%=basePath%>"/>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

    <title>新增顾客</title>
    <link rel="stylesheet" href="bootstrap3.3.7/css/bootstrap.css">
    <script src="js/jquery-3.4.1.js" charset="UTF-8"></script>
</head>
<body>
    <div style="justify-content: center;margin: 20px 20px;">
        <h1>新增顾客</h1>
        <form action="/customer/" method="post">
            <table class="table table-bordered">
                <tr>
                    <td>
                        <label>姓名</label>
                    </td>
                    <td>
                        <input type="text" name="username">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>职务</label>
                    </td>
                    <td>
                        <input type="text" name="jobs">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>手机号码</label>
                    </td>
                    <td>
                        <input type="text" name="phone">
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <button class="btn btn-primary" type="submit">保存</button>
                        <button class="btn btn-primary" type="reset">重置</button>
                    </td>
                </tr>
            </table>
        </form>
    </div>
</body>
</html>

在list_customer.jsp页面加一个 

<a href="/customer/add">新增顾客</a>

这样,我们的新增操作就完成了,现在来测试一下,点击新增顾客,输入信息,然后保存

我们发现Tom的信息已经添加进去了,至此,我们的新增操作也完成了。

3.修改操作

修改操作要根据选中的id来实现操作,也就是点击修改先查询到要修改对象的id,然后查到信息,最后,修改信息并保存。

1)mapper接口

CustomerMapper:查询要修改的id

Customer findAllById(int id);
int updateCustomer(Customer customer);
2)service服务层
2.1)service接口

与mapper接口基本一致,CustomerService:

Customer findAllById(int id);
int updateCustomer(Customer customer);
2.2) service接口实现类

CustomerServiceImpl

  @Override
    public Customer findAllById(int id) {
        return customerMapper.findAllById(id);
    }

    @Override
    public int updateCustomer(Customer customer) {
        return customerMapper.updateCustomer(customer);
    }
3)mapper 

我们需要配置CustomerMapper.xml来实现mapper中的增删改查等方法。

<update id="updateCustomer" parameterType="customer">
    update customer
    <set>
        <if test="username !=null and username!=''">username=#{username},</if>
        <if test="jobs !=null and jobs!=''">jobs=#{jobs},</if>
        <if test="phone !=null and phone!=''">phone=#{phone},</if>
    </set>
    where id=#{id};
</update>
<select id="findAllById" resultMap="BaseResultMap" parameterType="int">
    select *
    from customer
    where id =#{id}
</select>
4)junit4测试
 @Test
    public void updateCustomer() {
        Customer customer = new Customer(6,"jack","教师","16562366666");
        int i = customerService.updateCustomer(customer);
        System.out.println(i);
    }

 通过测试发现测试成功。成功后我们就可以编写controller控制层了。

5)Controller控制层

CustomerController

  @RequestMapping("/customer/edit/{id}")
    public ModelAndView editCustomer(@PathVariable int id){
        ModelAndView modelAndView = new ModelAndView();
        Customer customer = customerService.findAllById(id);
        modelAndView.addObject("customer",customer);
        modelAndView.setViewName("edit_customer");
        return modelAndView;
    }

    @PutMapping("/customer/")
    public String updateCustomer( Customer customer){
        int rows = customerService.updateCustomer(customer);
        return "redirect:/customer/list";
    }

 在写完控制层后只需在上篇文章的基础上修改一下jsp文件就行。

6)新建edit_customer.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"
         pageEncoding="utf-8" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":"
            + request.getServerPort() + path + "/";
%>

<!DOCTYPE html>
<html>
<head>
    <base href="<%=basePath%>"/>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

    <title>更新信息</title>
    <link rel="stylesheet" href="bootstrap3.3.7/css/bootstrap.css">
    <script src="js/jquery-3.4.1.js" charset="UTF-8"></script>
</head>
<body>
<div style="justify-content: center;margin: 20px 20px;">
    <h1>编辑顾客</h1>
    <form action="/customer/" method="post">
        <input type="hidden" name="_method" value="PUT">
        <input type="hidden" name="id" value="${customer.id}">
        <table class="table table-bordered">
            <tr>
                <td>
                    <label>姓名</label>
                </td>
                <td>
                    <input type="text" name="username" value="${customer.username}">
                </td>
            </tr>
            <tr>
                <td>
                    <label>职务</label>
                </td>
                <td>
                    <input type="text" name="jobs" value="${customer.jobs}">
                </td>
            </tr>
            <tr>
                <td>
                    <label>手机号码</label>
                </td>
                <td>
                    <input type="text" name="phone" value="${customer.phone}">
                </td>
            </tr>
            <tr>
                <td>
                </td>
                <td>
                    <button class="btn btn-primary" type="submit">保存</button>
                    <button class="btn btn-primary" type="reset">重置</button>
                </td>
            </tr>
        </table>
    </form>
</div>
</body>
</html>

修改一下list_customer.jsp

<a class="btn btn-primary" href="/customer/edit/${customer.id}">编辑</a>

测试一下 ,点击编辑,将Tom的职务改为教师

点击保存,我们发现Tom的职业确实已经变为教师了。

作者声明:本文可能会出现错误,望诸位海涵

如有侵权,请联系作者删除

  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点燃大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值