ssm客户管理系统的设计与实现
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 删除