上接于 https://www.cnblogs.com/shijinglu2018/p/10374541.html

......

三)客户管理模块开发

说明:其实大致思路差不太多,都是首先根据前端页面分析,并用mvc思想完成相应的功能。

mvc : 前端页面<--->控制器<--->业务层<--->数据访问对象层。

前端页面用于显示,并且每一个小模块都是死的,这是就需要站在使用者的角度去分

析和判断并写相应的控制器,如页面的跳转和页面信息的会显等(这里主要用是

SpringMVC和Servlet还有前端等技术),为了降低项目各个模块的耦合性,方便后期

修改,分离出一个业务层,这个业务层的主要接收控制层参数,并返回给控制层,另

外,相应的异常也是在此层中进行处理的(这里主要用到的是Spring模块),最后要

连接数据库,到DB中取出相应的数据,即JDBC,而这里主要是用MyBatis来实现。

另外各个层之间可以用@AutoWire或者是@Resource来进行进行类的自动装配,也可

看成是一种多态的使用。

具体实现思路参看:https://blog.csdn.net/weixin_41871468/article/details/81329712

    1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

    2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。

    3. 写Mapper.java/Dao.java,将Mapper.xml中的操作按照id映射成Java函数。实际上就是Dao接口,二者选一即可。

    4. 写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。

    5. 写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。

    6. 写JSP页面调用,请求哪些参数,需要获取什么数据。

 
                  其实,在实际开发时,可能是先有的前端页面,再有的服务器端和数据库等,所以也可将以上顺序整个倒过来。
 

1.查询客户

......

2.添加客户

1)先测试一下前端页面,看看并打开源代码。

<a href="#" class="btn btn-primary" data-toggle="modal"
data-target="#newCustomerDialog" onclick="clearCustomer()">新建</a>
//清空新建客户窗口中的数据
function clearCustomer() {
$("#new_customerName").val("");
$("#new_customerFrom").val("")
$("#new_custIndustry").val("")
$("#new_custLevel").val("")
$("#new_linkMan").val("");
$("#new_phone").val("");
$("#new_mobile").val("");
$("#new_zipcode").val("");
$("#new_address").val("");
}
// 创建客户
function createCustomer() {
$.post("<%=basePath%>customer/create.action",
$("#new_customer_form").serialize(),function(data){
if(data =="OK"){
alert("客户创建成功!");
window.location.reload();
}else{
alert("客户创建失败!");
window.location.reload();
}
});
}

2)Controller层

//@Controller
/**
* 控制器:添加客户
* 添加一个session,判断是否该用户已经登录了。但其实也可以不用加,因为登录有一个拦截器,
* 如果用户可以做新增用户操作,说明该用户已经登录。
* */
@RequestMapping("customer/create.action")
@ReponseBody
public String customerCreate(Customer customer,HttpSession session){
//获取Session中的当前用户信息
User user=(User)session.getAttribute("USER_SESSION");
//将当前用户id存储在客户对象中
Integer id=customer.setCust_create_id(user.getUser_id());
//如果改为custmoerServiceImpl应该也行吧,这里是向上造型,加强了其使用的可扩展性。
int rows=customerService.customerCreate(customer);
if(rows>0){
return "OK";
}else{
return "FAIL";
}
}

3)Service层

//@Service
/**
* 接口:添加用户
* */
public String customerCreate(Customer customer); /**
* 接口的实现类中的方法:添加用户
*/
public String customerCreate(Customer customer){
return customDao.customerCreate(customer);
}

4)Dao层

/**
* DAO层:添加用户
*/
public String customerCreate(Customer customer);
/**
* 对应的映射文件中的方法
* 说明:paramterType后面参数名称可以小写,因为前面哪个位置设置了的。
* 另外,前端页面(弹出来的对话框和对应的数据库中的表,实体类)
* */
<insert id="customerCreate" paramterType="customer">
insert into customer(
cust_name,
cust_user_id,
cust_create_id,
cust_source,
cust_industry,
cust_level,
cust_linkman,
cust_phone,
cust_mobile,
cust_zipcode,
cust_address,
cust_createtime
) values{
#{cust_name},
#{cust_user_id},
#{cust_source},
#{cust_industry},
#{cust_level},
#{cust_linkman},
#{cust_phone},
#{cust_mobile},
#{cust_zipcode},
#{cust_address},
#{cust_createtime}
}
</insert>

3.修改客户

...

1)Controller层

/**
* 更新客户
*/
@RequestMapping("/customer/update.action")
@ResponseBody
public String customerUpdate(Customer customer) {
int rows = customerService.updateCustomer(customer);
if(rows > 0){
return "OK";
}else{
return "FAIL";
}
}

2)业务层

// 更新客户
public int updateCustomer(Customer customer);

3)Dao层

// 更新客户信息
public int updateCustomer(Customer customer);
    <!-- 更新客户 -->
<update id="updateCustomer" parameterType="customer">
update customer
<set>
<if test="cust_name!=null">
cust_name=#{cust_name},
</if>
<if test="cust_user_id!=null">
cust_user_id=#{cust_user_id},
</if>
<if test="cust_create_id!=null">
cust_create_id=#{cust_create_id},
</if>
<if test="cust_source!=null">
cust_source=#{cust_source},
</if>
<if test="cust_industry!=null">
cust_industry=#{cust_industry},
</if>
<if test="cust_level!=null">
cust_level=#{cust_level},
</if>
<if test="cust_linkman!=null">
cust_linkman=#{cust_linkman},
</if>
<if test="cust_phone!=null">
cust_phone=#{cust_phone},
</if>
<if test="cust_mobile!=null">
cust_mobile=#{cust_mobile},
</if>
<if test="cust_zipcode!=null">
cust_zipcode=#{cust_zipcode},
</if>
<if test="cust_address!=null">
cust_address=#{cust_address},
</if>
<if test="cust_createtime!=null">
cust_createtime=#{cust_createtime},
</if>
</set>
where cust_id=#{cust_id}
</update>

4.删除客户功能

1)分析前端页面:

点击删除用户:

    <a href="#" class="btn btn-danger btn-xs" onclick="deleteCustomer(${row.cust_id})">删除</a>

执行并弹出以下内容:

    // 删除客户
function deleteCustomer(id) {
if(confirm('确实要删除该客户吗?')) {
$.post("<%=basePath%>customer/delete.action",{"id":id},
function(data){
if(data =="OK"){
alert("客户删除成功!");
window.location.reload();
}else{
alert("删除客户失败!");
window.location.reload();
}
});
}
}

2)依据customer/delete.action写控制器,一个删除用户的方法。

      /**
* 删除客户
*/
@RequestMapping("/customer/delete.action")
@ResponseBody
public String customerDelete(Integer id){
int rows=customerService.deleteCustomer(id);
if (rows>0){
return "OK";
}else{
return "FAIL";
}
}

说明: 这个删除功能没有太多操作,调用业务层接口中的方法来获取数据库中受影响的行数,如果大于0则删除成功,否则删除失败。

3)实现业务层方法

接口:

// 删除客户
public int deleteCustomer(Integer id);

实现类:

      /**
* 删除客户
*/
@Override
public int deleteCustomer(Integer id){
return customerDao.deleteCustomer(id);
}

4)实现DAO层方法

接口:

// 删除客户
public int deleteCustomer(Integer id);

实现类(这个封装了JDBC,MyBatis底层封装了实现类):

<!-- 删除客户 -->
<delete id="deleteCustomer" parameterType="Integer">
delete from customer where cust_id=#{id}
</delete>

复杂的事情简单做,简单的事情重复做。

学会重复,学会复盘,学会输入和输出,输入输出竟可能对等。

SSM项目思路整合NEW2的更多相关文章

  1. SSM项目思路整合NEW

    #首先进行项目思路整体分析,具体包括哪些模块,如何实现等: 一)搭建环境 1.导包: (Spring核心包4个 + 面向切面的包4个 + SpringJDBC和事务的包各一个, SpringMVC两个 ...

  2. SSM框架的整合思路&功能实现

    这是我第一篇博客,关于SSM框架的整合思路以及简单功能实现. 首先,最近刚刚学习Spring+SpringMVC+Mybatis,在开发时遇到形形色色的问题,周遭人也为我提供了一些思路,我会一点点整理 ...

  3. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  4. SSM项目整合Quartz

    一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...

  5. SSM 项目整合

    SSM整合:spring + springmvc + mybatis 1.1 生成Maven项目:ar_ssm 1.2 添加jar包 <dependencies> <!-- 单元测试 ...

  6. 优雅地搭建整合ssm项目

    spring + spring mvc + mybatis 三大框架建议观看 黑马程序员出品的 Springmvc+Mybatis由浅入深全套视频教程 Spring框架2016版视频 观看顺序 ,我个 ...

  7. SSM项目整合第一步 注册登陆实现

    SSM项目整合第一步  注册: 项目目录: 一.数据库建表: 源码: ; -- ---------------------------- -- Table structure for t_user - ...

  8. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

  9. SpringMVC详解(四)------SSM三大框架整合之登录功能实现

    为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...

随机推荐

  1. 输入正整数n,求各位数字和

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/5 10:24 * @description ...

  2. Linux系统安装tomcat

    1.首先下载tomcat:http://tomcat.apache.org/download-60.cgi 2.解压缩tar.gz文件: tar -xzvf xxxxxxx/apache-tomcat ...

  3. Python全栈-magedu-2018-笔记9

    第三章 - Python 内置数据结构 封装和解构 封装 将多个值使用逗号分割,组合在一起 本质上,返回一个元组,只是省掉了小括号 python特有语法,被很多语言学习和借鉴    t1 = (1,2 ...

  4. java_xml_解析

    xml解析的两种的基本方式 1:SAX解析:一行一行的解析,不回头 2:DOM解析:将整个XML以树状读到内存中,然后需要哪一部分就取哪一部分 SAX解析: 基于java的步骤: //1.获取解析工厂 ...

  5. Java代码实现封装多级树结构对象

    前言: 在开发中,我们经常见到,前端展示树状结构的,这时候就需要后端去封装一个多级树结构对象,前端根据这样结构的数据去渲染数据,这篇文章讲的是如何封装成多级树结构对象. 正文: 1.先封装个树结构的对 ...

  6. vue跳转到外部链接

    <span @click="see('http://xxxx">点击跳转到xxx</span> 方法:(调用函数) See (e) { window.loc ...

  7. for里面是采用setInterval遍历二维数组,for循环到最后一个数的时候,才执行setInterval的问题解决

    点击播放看效果 <!doctype html> <html lang="en"> <head> <meta charset="U ...

  8. springcloud第八步:hystrix解决服务雪崩

    断路器(Hystrix) 为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自 ...

  9. mysql-8.0.13在windows上的部署

    1 .下载mysql-8.0.13-x64 官方网站:https://dev.mysql.com/downloads/mysql/ 2.解压到G盘 3.准备my.ini文件保存到解压目录 [mysql ...

  10. mysql高可用研究(一) 主从+MHA架构 (转)

    最近在研究mysql的高可用架构,自己想总结下常用的高可用方案都有哪些.有哪些优缺点以及应用的场景?搞得是头昏脑涨,天昏地暗,看了诸多资料,每次都觉得公说公有理婆说婆有理.其实嘛,大家说的都有一定的道 ...