CRM综合练习:客户拜访记录
客户拜访记录管理
客户拜访记录需求的概述
一个系统的用户(公司业务员),业务员需要对客户进行拜访,对拜访的过程进行记录。业务员(用户)和客户(客户)之间关系(需要具体业务具体分析:一对多—公司产品比较单一,只允许一个业务员对应多个客户。多对多—大公司有不同的产品,不同产品下有不同业务员都可以接触到同一个客户,一个客户可以对应多个业务员)。大部分情况创建成多对多。
- 多对多建表原则:
- 创建中间表,中间表中至少两个字段分别作为外键指向多对多双方的主键。
- 创建中间表,中间表中至少两个字段分别作为外键指向多对多双方的主键。
客户拜访记录的准备工作
创建表
CREATE TABLE `sale_visit` (
`visit_id` varchar(32) NOT NULL,
`visit_cust_id` bigint(32) DEFAULT NULL COMMENT '客户id',
`visit_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
`visit_time` datetime DEFAULT NULL COMMENT '拜访时间',
`visit_addr` varchar(128) DEFAULT NULL COMMENT '拜访地点',
`visit_detail` varchar(256) DEFAULT NULL COMMENT '拜访详情',
`visit_nexttime` date DEFAULT NULL COMMENT '下次拜访时间',
PRIMARY KEY (`visit_id`),
KEY `FK_sale_visit_cust_id` (`visit_cust_id`),
KEY `FK_sale_visit_user_id` (`visit_user_id`),
CONSTRAINT `FK_sale_visit_cust_id` FOREIGN KEY (`visit_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_sale_visit_user_id` FOREIGN KEY (`visit_user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建实体和映射
- 创建实体
- 创建映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lele.crm.domain.SaleVisit" table="sale_visit">
<id name="visit_id" column="visit_id">
<generator class="uuid"/>
</id>
<property name="visit_time" column="visit_time"/>
<property name="visit_addr" column="visit_addr"/>
<property name="visit_detail" column="visit_detail"/>
<property name="visit_nexttime" column="visit_nexttime"/>
<!-- 配置与客户的关联关系 -->
<many-to-one name="customer" class="com.lele.crm.domain.Customer" column="visit_cust_id"/>
<!-- 配置与用户的关联关系 -->
<many-to-one name="user" class="com.lele.crm.domain.User" column="visit_user_id"/>
</class>
</hibernate-mapping>
创建相关类
将相关类进行配置
- Bean管理交给Spring的XML
- 属性注入使用注解方式
客户拜访记录的列表显示
修改menu.jsp的提交路径
编写Action的findAll的方法
编写Service
在页面显示数据
客户拜访记录的保存
修改menu.jsp的链接地址
编写Action中的saveUI方法
跳转到添加页面
异步加载数据
编写Action的save方法
编写Service
客户拜访记录的条件查询
修改了Action的findAll的方法
权限拦截器
实现一个权限拦截器
编写类继承拦截器类
配置拦截器
SSH整合(纯注解)
搭建SSH注解开发的环境
第一步:创建web项目,引入jar包
- SSH整合的jar包
- Struts2的注解开发包:
- struts2-convention-plugin-2.3.24.jar ----Struts2的注解开发包。
第二步:引入配置文件
- web.xml
- Struts2的过滤器
- Struts2的过滤器
- Spring的监听器
- jdbc.properties
- log4j.properties
- applicationContext.xml
第三步:创建相关的包和类
第四步:引入相关页面
保存客户
第五步:编写Action的save方法
第六步:配置Action
- 在Spring中配置Action,Action交给Spring管理(使用注解方式)
- 开启组件扫描
- 在类上添加注解:
- 开启组件扫描
- 在struts中配置Action,Action负责处理请求和页面跳转
第七步:Action调用业务层
- Service交给Spring管理
- Action中注入Service
- 在Action的方法中调用业务层
第八步:在Service中调用DAO
- 将DAO交给Spring管理
- 在Service中注入DAO
第九步:创建实体和映射(映射使用的是注解)
- 现在映射使用注解实现(将表和类建立关系,将表中的字段和类中属性建立关系)
第十步:在Spring中整合Hibernate
第十一步:在DAO中使用模板
- 不能让DAO继承HibernateDaoSupport,因为属性注入不能使用注解方式。
- 自己在DAO中注入模板
- 定义Hibernate模板
- 注入模板
- 定义Hibernate模板
- 在DAO中使用模板完成保存
第十二步:配置事务管理
- 配置事务管理器
- 开启注解事务
- 在业务层添加注解