CRM_day02
CRM_day02笔记
上次课内容回顾
- SVN
- SVN:版本控制工具。
- 常见版本控制工具
- SVN
- CVS
- GIT
- 安装SVN服务器
- 安装SVN客户端
- SVN的使用
- 检出checkout
- 更新update
- 提交commit
- 解决SVN冲突问题
- SVN的权限的设置
- SVN创建用户
- SVN创建组
- SVN设置权限
- SVN的Eclipse的插件
- 搭建CRM环境
- CRM:客户关系管理
- CRM准备工作:
- CRM用户的注册功能
- 完成用户注册的功能
- 将CRM部署SVN服务器上
CRM综合练习:用户模块登录功能
用户模块:登录功能代码实现
修改登录页面
编写Action中login方法
编写Service
编写DAO
配置页面的跳转
在页面中显示数据
- 在成功页面上显示用户信息
- 在失败的页面上显示错误信息
CRM综合练习:客户管理保存客户
客户管理:准备工作
创建表
CREATE TABLE `cst_customer` (
`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
`cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
创建实体和映射
- 创建实体
- 创建映射
创建Action
创建Service
创建DAO
配置Action、Service、DAO
跳转到添加页面
修改左侧菜单页面
编写Action中的saveUI的方法
配置Action的跳转
测试跳转
引入数据字典
什么是数据字典
数据字典用来规范某些地方具体值和数据
创建数据字典表
CREATE TABLE `base_dict` (
`dict_id` varchar(32) NOT NULL COMMENT '数据字典id(主键)',
`dict_type_code` varchar(10) NOT NULL COMMENT '数据字典类别代码',
`dict_type_name` varchar(64) NOT NULL COMMENT '数据字典类别名称',
`dict_item_name` varchar(64) NOT NULL COMMENT '数据字典项目名称',
`dict_item_code` varchar(10) DEFAULT NULL COMMENT '数据字典项目(可为空)',
`dict_sort` int(10) DEFAULT NULL COMMENT '排序字段',
`dict_enable` char(1) NOT NULL COMMENT '1:使用 0:停用',
`dict_memo` varchar(64) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`dict_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
客户表和字典表的关系分析
创建字典的实体和映射
- 创建实体
- 创建映射
修改字典和客户的关系映射
- 修改了客户的实体
- 修改客户的映射
将映射文件交给Spring
在添加页面上异步加载字典数据
创建字典的Action、Service、DAO
- 编写DAO
- 编写Service
- 编写Action
将字典类交给Spring
引入jquery的js(在添加页面上)
编写异步加载的方法
<script type="text/javascript">
$(function(){
// 页面加载函数就会执行:
// 页面加载,异步查询字典数据:
// 加载客户来源
$.post("${pageContext.request.contextPath }/baseDict_findByTypeCode.action",{"dict_type_code":"002"},function(data){
// 遍历json的数据:
$(data).each(function(i,n){
$("#cust_source").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
});
},"json");
});
</script>
编写Action
编写Service
编写DAO
加载其他字典项数据
<script type="text/javascript">
$(function(){
// 页面加载函数就会执行:
// 页面加载,异步查询字典数据:
// 加载客户来源
$.post("${pageContext.request.contextPath }/baseDict_findByTypeCode.action",{"dict_type_code":"002"},function(data){
// 遍历json的数据:
$(data).each(function(i,n){
$("#cust_source").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
});
},"json");
$.post("${pageContext.request.contextPath }/baseDict_findByTypeCode.action",{"dict_type_code":"006"},function(data){
// 遍历json的数据:
$(data).each(function(i,n){
$("#cust_level").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
});
},"json");
$.post("${pageContext.request.contextPath }/baseDict_findByTypeCode.action",{"dict_type_code":"001"},function(data){
// 遍历json的数据:
$(data).each(function(i,n){
$("#cust_industry").append("<option value='"+n.dict_id+"'>"+n.dict_item_name+"</option>");
});
},"json");
});
</script>
保存数据到数据库中
修改添加页面
- 修改表单项名称:
编写Action
编写Service
编写DAO
添加事务:
CRM综合练习:客户管理分页查询客户
查询客户(分页)
修改menu.jsp
编写Action中findAll的方法
public String findAll() {
// 接收参数:分页参数
// 最好使用DetachedCriteria对象(条件查询--带分页)
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Customer.class);
// 调用业务层查询:
PageBean<Customer> pageBean = customerService.findByPage(detachedCriteria, currPage, pageSize);
ActionContext.getContext().getValueStack().push(pageBean);
return "findAll";
}
编写Service
@Override
// 业务层分页查询客户的方法:
public PageBean<Customer> findByPage(DetachedCriteria detachedCriteria, Integer currPage,Integer pageSize) {
PageBean<Customer> pageBean = new PageBean<Customer>();
// 封装当前页数:
pageBean.setCurrPage(currPage);
// 封装每页显示记录数:
pageBean.setPageSize(pageSize);
// 封装总记录数:
// 调用DAO:
Integer totalCount = customerDao.findCount(detachedCriteria);
pageBean.setTotalCount(totalCount);
// 封装总页数:
Double tc = totalCount.doubleValue();
Double num = Math.ceil(tc/pageSize);
pageBean.setTotalPage(num.intValue());
// 封装每页显示数据的集合
Integer begin = (currPage - 1) * pageSize;
List<Customer> list = customerDao.findByPage(detachedCriteria,begin,pageSize);
pageBean.setList(list);
return pageBean;
}
编写DAO
@Override
// DAO中带条件统计个数的方法
public Integer findCount(DetachedCriteria detachedCriteria) {
// select count(*) from xxx where 条件;
detachedCriteria.setProjection(Projections.rowCount());
List<Long> list = (List<Long>) this.getHibernateTemplate().findByCriteria(detachedCriteria);
if(list.size()>0){
return list.get(0).intValue();
}
return null;
}
@Override
// DAO中分页查询客户的方法
public List<Customer> findByPage(DetachedCriteria detachedCriteria, Integer begin, Integer pageSize) {
detachedCriteria.setProjection(null);
return (List<Customer>) this.getHibernateTemplate().findByCriteria(detachedCriteria, begin, pageSize);
}
配置页面跳转
在list.jsp中显示数据

浙公网安备 33010602011771号