首页 > 其他 > 详细

ssm客户管理系统的设计与实现

时间:2019-04-01 21:27:54      阅读:113      评论:0      收藏:0      [点我收藏+]

ssm客户管理系统

注意:本文是在我的上一篇文章 https://www.cnblogs.com/peter-hao/p/ssm.html的基础上开发

1     需求

1.1   添加客户

客户填写信息,提交,将信息保存到数据库中。

1.2   删除客户

在每条查询出来的客户信息设置删除操作,点击即可删除。更新数据库。

1.3   更新客户信息

在每条查询出来的客户信息设置修改操作,点击进入修改界面,提交,更新数据库。

1.4   查询客户

查询所有的客户信息;根据客户名称进行模糊查询;根据客户类型进行查询。

2     编写思路

从后端向前端开始编写的思路。首先,编写dao层的增删改查的方法,这里大部分利用逆向工程生成的mapper接口中的crud的方法,模糊查询和根据客户类型查询则是重新自定义mapper和xml文件。其次,编写service接口和service实现类,通过spring注解开发,在service实现类中注入mapper接口类,在service实现类中调用mapper中的方法,实现crud操作。然后,开发controller层,注入service接口类,调用service接口中的方法,查询到的数据通过视图解析器解析modelAndView传到jsp界面。修改、删除和更新后通过redirect重定向到查询页面,查看操作后的客户信息。

2.1   dao层

2.1.1  逆向工程中mapper接口中的crud的方法。

运用到逆向工程中mapper接口的以下四个方法:

 技术分享图片

2.1.2  模糊查询的mapper接口和xml

Mapper接口:

 

public interface CustomMapper {

   public List<HhCustom> findAllCustom(HhCustomVo hhCustomVo)throws Exception;

}

 

Mapper.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">

 

<!-- namespace:命名空间,作用是对sql进行分类化管理,sql隔离 -->

<mapper namespace="cn.haohan.ssm.mapper.CustomMapper">

   <sql id="query_custom_where">

       <if test="hhCustom!=null">

       <if test="hhCustom.name!=null and hhCustom.name!=‘‘">

          name like ‘%${hhCustom.name}%‘

       </if>

       <if test="hhCustom.category!=null and hhCustom.category!=‘‘">

          and category = #{hhCustom.category}

       </if>

       </if>

   </sql>

   <resultMap type="hhCustom" id="hhCustomResultMap">

   <id column="id" property="id"/>

   <result column="phone_number" property="phoneNumber"/>

   </resultMap>

   <select id="findAllCustom" parameterType="cn.haohan.ssm.po.HhCustomVo" resultMap="hhCustomResultMap">

      SELECT

      * FROM hh_custom

       <where>

         <include refid="query_custom_where"></include>

      </where>

   </select>

</mapper>

2.2   service层

2.2.1  service接口

public interface CustomService {

   //根据客户id查询

   public HhCustom findCustomById(Integer id)throws Exception;

   //模糊查询客户信息

   public List<HhCustom> findAllCustom(HhCustomVo hhCustomVo)throws Exception;

   //根据客户id删除客户

   public void deleteCustomById(Integer id)throws Exception;

   //添加用户

   public void addCustom(HhCustom hhCustom)throws Exception;

   //更新用户信息

   public void updateCustom(Integer id,HhCustom hhCustom)throws Exception;

}

2.2.2  service实现类

public class CustomServiceImpl implements CustomService{

  

   @Autowired

   HhCustomMapper hhCustomMapper;

   @Autowired

   CustomMapper customMapper;

   @Override

   public HhCustom findCustomById(Integer id) throws Exception {

      return hhCustomMapper.selectByPrimaryKey(id);

   }

   @Override

   public List<HhCustom> findAllCustom(HhCustomVo hhCustomVo) throws Exception {

      return customMapper.findAllCustom(hhCustomVo);

   }

   @Override

   public void deleteCustomById(Integer id) throws Exception {

      int row  = hhCustomMapper.deleteByPrimaryKey(id);

     

   }

   @Override

   public void addCustom(HhCustom hhCustom) throws Exception {

      hhCustomMapper.insertSelective(hhCustom);

   }

   @Override

   public void updateCustom(Integer id, HhCustom hhCustom) throws Exception {

      hhCustom.setId(id);

      hhCustomMapper.updateByPrimaryKeySelective(hhCustom);

   }

 

}

2.3   controller层

@Controller

public class CustomController {

 

   @Autowired

   CustomService customService;

 

   // 客户分类

   // customTypes表示最终将方法返回值放在request域中的key

   @ModelAttribute("customTypes")

   public Map<String, String> getcustomTypes() {

      Map<String, String> customTypes = new HashMap<String, String>();

      customTypes.put("101", "普通客户");

      customTypes.put("102", "意向客户");

      customTypes.put("103", "活跃客户");

      customTypes.put("104", "Vip客户");

      return customTypes;

   }

 

   // 模糊查询客户

   @RequestMapping("/findAllCustom")

   public ModelAndView findAllCustom(HhCustomVo hhCustomVo) throws Exception {

      List<HhCustom> customlist = customService.findAllCustom(hhCustomVo);

      ModelAndView modelAndView = new ModelAndView();

      modelAndView.addObject("customlist", customlist);

      modelAndView.setViewName("customlist");

      return modelAndView;

   }

 

   // 根据客户id查询

   @RequestMapping("/findCustomByid")

   public ModelAndView findCustomByid(Integer id) throws Exception {

      HhCustom hhCustom = customService.findCustomById(id);

      ModelAndView modelAndView = new ModelAndView();

      modelAndView.addObject("hhCustom", hhCustom);

      modelAndView.setViewName("customlist");

      return modelAndView;

   }

 

   // 添加客户

   // String返回逻辑视图名,在springmvc中配置的视图解析器中配置jsp文件前后缀

   @RequestMapping("/addCustom")

   public String addCustom() throws Exception {

      return "add_custom";

   }

 

   // 添加客户submit

   @RequestMapping("/addCustomSubmit")

   public String addCustomSubmit(HhCustom hhCustom) throws Exception {

      customService.addCustom(hhCustom);

      // 重定向

      return "redirect:findAllCustom.action";

   }

 

   // 删除客户

   @RequestMapping("/deleteCustom")

   public String deleteCustom(Integer id) throws Exception {

      customService.deleteCustomById(id);

      return "redirect:findAllCustom.action";

   }

 

   // 更新客户信息

   @RequestMapping("/updateCustom")

   public String updateCustom(Model model, Integer id) throws Exception {

      HhCustom hhCustom = customService.findCustomById(id);

      model.addAttribute("hhCustom", hhCustom);

      return "update_custom";

   }

 

   // 更新客户信息submit

   @RequestMapping("/updateCustomSubmit")

   public String updateCustomSubmit(Integer id, HhCustom hhCustom) throws Exception {

      customService.updateCustom(id, hhCustom);

      return "redirect:findAllCustom.action";

   }

}

 

2.4   jsp界面

2.4.1  customlist.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

   pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script type="text/javascript">

function addCustom(){

document.customForm.action="${pageContext.request.contextPath}/addCustom.action";

   document.customForm.submit();

}

</script>

<title>客戶列表</title>

</head>

<body>

   <form name="customForm"

      action="${pageContext.request.contextPath}/findAllCustom.action"

      method="post">

      查询条件:

      <table width="100%" border=1>

         <tr>

            <td>客戶名称:<input name="hhCustom.name" />

            </td>

            <td>客戶类型: <select name="hhCustom.category">

                   <option selected="selected"></option>

                   <c:forEach items="${customTypes}" var="customType">

                      <option value="${customType.value }">${customType.value}</option>

                   </c:forEach>

            </select>

            </td>

            <td><button type="submit" value="查询" >查询</button></td>

            <td><input type="button" value="添加客户" onclick="addCustom()"/></td>

         </tr>

      </table>

      客戶列表:

      <table width="100%" border=1>

         <tr>

            <!-- <th>选择</th>  -->

            <th>客戶名称</th>

            <th>客戶邮箱</th>

            <th>客戶电话</th>

            <th>客户类型</th>

            <th>操作</th>

         </tr>

         <c:forEach items="${customlist}" var="custom">

            <tr>

                <%-- <td><input type="checkbox" name="custom_id" value="${custom.id}" /></td> --%>

                <td>${custom.name }</td>

                <td>${custom.mail }</td>

                <td>${custom.phoneNumber }</td>

                <td>${custom.category }</td>

                <%--<td><fmt:formatDate value="${custom.birthday }" pattern="yyyy-MM-dd HH:mm:ss"/></td>--%>

                <td><a href="${pageContext.request.contextPath }/updateCustom.action?id=${custom.id }">修改</a>

                   <a href="${pageContext.request.contextPath }/deleteCustom.action?id=${custom.id }">删除</a>

                </td>

            </tr>

         </c:forEach>

      </table>

   </form>

</body>

</html>

2.4.2  add_custom.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>添加客户</title>

</head>

<body>

<form id="customForm" action="${pageContext.request.contextPath}/addCustomSubmit.action" method="post">

添加客户信息:

<table width="100%" border=1>

   <tr>

      <td>客户名称</td>

      <td><input type="text" name="name" /></td>

   </tr>

   <tr>

      <td>客户邮箱</td>

      <td><input type="text" name="mail" /></td>

   </tr>

   <tr>

      <td>客户电话号码</td>

      <td><input type="text" name="phoneNumber" /></td>

   </tr>

   <tr>

      <td>客户类型</td>

      <td><select name="category">

         <c:forEach items="${customTypes}" var="customType">

            <%-- <option value="${customType.key }">${customType.value}</option> --%>

            <option value="${customType.value }">${customType.value}</option>

         </c:forEach>

      </select>

      </td>

   </tr>

</table>

   <input type="submit" value="提交">

   <input type="reset" value="重置">

</form>

</body>

</html>

2.4.3  update_custom.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

   pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>修改客户信息</title>

</head>

<body>

   <form id="customForm"

      action="${pageContext.request.contextPath}/updateCustomSubmit.action"

      method="post">

      <input type="hidden" name="id" value="${hhCustom.id }" /> 修改客户信息:

      <table width="100%" border=1>

         <tr>

            <th>客户名称</th>

            <td><input type="text" name="name" value="${hhCustom.name }" /></td>

         </tr>

         <tr>

            <td>客户邮箱</td>

            <td><input type="text" name="mail" value="${hhCustom.mail }" /></td>

         </tr>

         <tr>

            <td>客户电话号码</td>

            <td><input type="text" name="phoneNumber"

                value="${hhCustom.phoneNumber }" /></td>

         </tr>

         <tr>

            <td>客户类型</td>

            <td><select name="category">

           <c:forEach items="${customTypes}" var="customType">

                      <%-- <option value="${customType.key }">${customType.value}</option> --%>

                      <c:if test="${hhCustom.category==customType.value }">

                         <option value="${customType.value }" selected="selected">${customType.value }</option>

                      </c:if>                    

                         <option value="${customType.value }" >${customType.value}</option>    

                   </c:forEach>

            </select></td>

            <%-- <td><input type="text" name="category" value="${hhCustom.category }"/></td> --%>

         </tr>

      </table>

      <input type="submit" value="提交">

   </form>

</body>

</html>

3     视图展示

3.1   查询

 技术分享图片

3.2   模糊查询

 技术分享图片

模糊查询加客户类型

 技术分享图片

3.3   添加

 技术分享图片

3.4   修改

 技术分享图片

3.5   删除

 技术分享图片

ssm客户管理系统的设计与实现

原文:https://www.cnblogs.com/peter-hao/p/ssm_custom.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!