联系人管理-查询列表| CRM客户关系管理系统项目实战四(Struts2+Spring+Hibernate)解析+源代码
发布日期:2021-06-29 15:02:30
浏览次数:2
分类:技术文章
本文共 10198 字,大约阅读时间需要 33 分钟。
一、联系人准备工作
1、创建表
CREATE TABLE `cst_linkman` ( `lkm_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '联系人编号(主键)', `lkm_name` varchar(16) DEFAULT NULL COMMENT '联系人姓名', `lkm_cust_id` bigint(32) NOT NULL COMMENT '客户id', `lkm_gender` char(1) DEFAULT NULL COMMENT '联系人性别', `lkm_phone` varchar(16) DEFAULT NULL COMMENT '联系人办公电话', `lkm_mobile` varchar(16) DEFAULT NULL COMMENT '联系人手机', `lkm_email` varchar(64) DEFAULT NULL COMMENT '联系人邮箱', `lkm_qq` varchar(16) DEFAULT NULL COMMENT '联系人qq', `lkm_position` varchar(16) DEFAULT NULL COMMENT '联系人职位', `lkm_memo` varchar(512) DEFAULT NULL COMMENT '联系人备注', PRIMARY KEY (`lkm_id`), KEY `FK_cst_linkman_lkm_cust_id` (`lkm_cust_id`), CONSTRAINT `FK_cst_linkman_lkm_cust_id` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2、创建实体和映射
(1)创建联系人的实体
package com.itzheng.crm.domain;/* * 联系人的实体 * CREATE TABLE `cst_linkman` ( `lkm_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '联系人编号(主键)', `lkm_name` VARCHAR(16) DEFAULT NULL COMMENT '联系人姓名', `lkm_cust_id` BIGINT(32) NOT NULL COMMENT '客户id', `lkm_gender` CHAR(1) DEFAULT NULL COMMENT '联系人性别', `lkm_phone` VARCHAR(16) DEFAULT NULL COMMENT '联系人办公电话', `lkm_mobile` VARCHAR(16) DEFAULT NULL COMMENT '联系人手机', `lkm_email` VARCHAR(64) DEFAULT NULL COMMENT '联系人邮箱', `lkm_qq` VARCHAR(16) DEFAULT NULL COMMENT '联系人qq', `lkm_position` VARCHAR(16) DEFAULT NULL COMMENT '联系人职位', `lkm_memo` VARCHAR(512) DEFAULT NULL COMMENT '联系人备注', PRIMARY KEY (`lkm_id`), KEY `FK_cst_linkman_lkm_cust_id` (`lkm_cust_id`), CONSTRAINT `FK_cst_linkman_lkm_cust_id` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; */public class LinkMan { private Long lkm_id; private String lkm_name; // 外键要编程映射 private String lkm_gender; private String lkm_phone; private String lkm_mobile; private String lkm_email; private String lkm_qq; private String lkm_position; private String lkm_memo; // 客户是一联系人是多 // 联系人这一方放置客户的对象 private Customer customer; public Long getLkm_id() { return lkm_id; } public void setLkm_id(Long lkm_id) { this.lkm_id = lkm_id; } public String getLkm_name() { return lkm_name; } public void setLkm_name(String lkm_name) { this.lkm_name = lkm_name; } public String getLkm_gender() { return lkm_gender; } public void setLkm_gender(String lkm_gender) { this.lkm_gender = lkm_gender; } public String getLkm_phone() { return lkm_phone; } public void setLkm_phone(String lkm_phone) { this.lkm_phone = lkm_phone; } public String getLkm_mobile() { return lkm_mobile; } public void setLkm_mobile(String lkm_mobile) { this.lkm_mobile = lkm_mobile; } public String getLkm_email() { return lkm_email; } public void setLkm_email(String lkm_email) { this.lkm_email = lkm_email; } public String getLkm_qq() { return lkm_qq; } public void setLkm_qq(String lkm_qq) { this.lkm_qq = lkm_qq; } public String getLkm_position() { return lkm_position; } public void setLkm_position(String lkm_position) { this.lkm_position = lkm_position; } public String getLkm_memo() { return lkm_memo; } public void setLkm_memo(String lkm_memo) { this.lkm_memo = lkm_memo; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public LinkMan() { // TODO Auto-generated constructor stub } public LinkMan(Long lkm_id, String lkm_name, String lkm_gender, String lkm_phone, String lkm_mobile, String lkm_email, String lkm_qq, String lkm_position, String lkm_memo, Customer customer) { super(); this.lkm_id = lkm_id; this.lkm_name = lkm_name; this.lkm_gender = lkm_gender; this.lkm_phone = lkm_phone; this.lkm_mobile = lkm_mobile; this.lkm_email = lkm_email; this.lkm_qq = lkm_qq; this.lkm_position = lkm_position; this.lkm_memo = lkm_memo; this.customer = customer; } @Override public String toString() { return "LinkMan [lkm_id=" + lkm_id + ", lkm_name=" + lkm_name + ", lkm_gender=" + lkm_gender + ", lkm_phone=" + lkm_phone + ", lkm_mobile=" + lkm_mobile + ", lkm_email=" + lkm_email + ", lkm_qq=" + lkm_qq + ", lkm_position=" + lkm_position + ", lkm_memo=" + lkm_memo + ", customer=" + customer + "]"; }}
(2)创建联系人的映射
(3)修改客户的实体
一个客户可以有多个联系人,在客户当中添加联系人的集合
(4)修改客户的映射
(5)在appliactionContext.xml当中添加LinkMan.hbm.xml映射文件
3、创建一些相关的类
(1)创建联系人Dao接口以及实现类
package com.itzheng.crm.dao;/* * 联系人的DAO接口 */public interface LinkManDao { }
继承HibernateDaoSupport
package com.itzheng.crm.dao.impl;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.itzheng.crm.dao.LinkManDao;/* * 联系人的DAO的实现类 */public class LinkManDaoImpl extends HibernateDaoSupport implements LinkManDao { }
(2)创建联系人Service以及对应的实现类
package com.itzheng.crm.service;public interface LinkManService { }
注入Dao
package com.itzheng.crm.service.impl;import com.itzheng.crm.dao.LinkManDao;import com.itzheng.crm.service.LinkManService;public class LinkManServiceImpl implements LinkManService { private LinkManDao linkManDao; public LinkManDao setLinkManDao() { return linkManDao; }}
(3)创建LinkManAction
package com.itzheng.crm.web.action;import com.itzheng.crm.domain.LinkMan;import com.itzheng.crm.service.LinkManService;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/* * 联系人的Action的类 */public class LinkManAction extends ActionSupport implements ModelDriven{ // 模型驱动使用的 private LinkMan linkMan = new LinkMan(); @Override public LinkMan getModel() { // TODO Auto-generated method stub return linkMan; } // 输入Service private LinkManService linkManService; public void setLinkManService(LinkManService linkManService) { this.linkManService = linkManService; }}
4、完成相关配置
在applicationContext.xml当中配置联系人相关的类
二、查询联系人的列表
1、修改menu.jsp的链接
2、编写LinkManAction,设置分页参数并设置对应findAll方法
设置分页参数
编写findAll方法package com.itzheng.crm.web.action;import org.hibernate.criterion.DetachedCriteria;import com.itzheng.crm.domain.LinkMan;import com.itzheng.crm.domain.PageBean;import com.itzheng.crm.service.LinkManService;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;/* * 联系人的Action的类 */public class LinkManAction extends ActionSupport implements ModelDriven{ // 模型驱动使用的 private LinkMan linkMan = new LinkMan(); @Override public LinkMan getModel() { // TODO Auto-generated method stub return linkMan; } // 输入Service private LinkManService linkManService; public void setLinkManService(LinkManService linkManService) { this.linkManService = linkManService; } // 分页参数 // 使用set方法的属性驱动的方式来接收数据 private Integer currPage = 1; public void setCurrPage(Integer currPage) { if (currPage == null) { currPage = 1; } this.currPage = currPage; } // 使用set方法接受每页显示的记录数 private Integer pageSize = 3; public void setPageSize(Integer pageSize) { if (pageSize == null) { pageSize = 3; } this.pageSize = pageSize; } /* * 查询联系人列表的Action */ public String findAll() { // 创建离线条件查询 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(LinkMan.class); // 设置条件 // 调用业务层 PageBean pageBean = linkManService.findAll(detachedCriteria, currPage, pageSize); ActionContext.getContext().getValueStack().push(pageBean); return "findAll"; }}
3、编写Service
在LinkManServiceImpl 编写findAll的方法
package com.itzheng.crm.service.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import com.itzheng.crm.dao.LinkManDao;import com.itzheng.crm.domain.LinkMan;import com.itzheng.crm.domain.PageBean;import com.itzheng.crm.service.LinkManService;public class LinkManServiceImpl implements LinkManService { private LinkManDao linkManDao; public void setLinkManDao(LinkManDao linkManDao) { this.linkManDao = linkManDao; } @Override //业务层来分页查询联系人的方法 public PageBeanfindAll(DetachedCriteria detachedCriteria, Integer currPage, Integer pageSize) { PageBean pageBean = new PageBean (); //设置当前页数 pageBean.setCurrPage(currPage); //设置每页显示的记录数 pageBean.setPageSize(pageSize); //设置总记录数 Integer totalCount = linkManDao.findCount(detachedCriteria); //设置总页数 pageBean.setTotalCount(totalCount); double tc = totalCount; Double num = Math.ceil(tc / pageSize); pageBean.setTotalPage(num.intValue()); //以及每页显示的数据的集合 Integer begin = (currPage - 1) * pageSize; List list = linkManDao.findByPage(detachedCriteria,begin,pageSize); pageBean.setList(list); return pageBean; }}
4、编写Dao
LinkManDaoImpl
package com.itzheng.crm.dao.impl;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Projections;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.itzheng.crm.dao.LinkManDao;import com.itzheng.crm.domain.LinkMan;/* * 联系人的DAO的实现类 */public class LinkManDaoImpl extends HibernateDaoSupport implements LinkManDao { @Override // DAO 当中统计个数的方法 public Integer findCount(DetachedCriteria detachedCriteria) { // TODO Auto-generated method stub detachedCriteria.setProjection(Projections.rowCount());// 带条件的查询 Listlist = (List ) this.getHibernateTemplate().findByCriteria(detachedCriteria); if (list.size() > 0) { return list.get(0).intValue(); } return null; } @Override // DAO 的分页查询 public List findByPage(DetachedCriteria detachedCriteria, Integer begin, Integer pageSize) { // TODO Auto-generated method stub // 情况count语句 detachedCriteria.setProjection(null); // 等到list集合:带条件的查询 List list = (List ) this.getHibernateTemplate().findByCriteria(detachedCriteria, begin, pageSize); return list; }}
5、在页面当中回显数据
(1)在struts.xml当中配置联系人的配置
(2)在linkman的list.jsp当中遍历list集合
(3)测试
测试成功
(4)完善下面的分页功能
在linkman的list.jsp
(5)测试成功
转载地址:https://code100.blog.csdn.net/article/details/107588980 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月20日 06时11分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
docker系列3:docker搭建CDH集群[单机单节点]
2019-04-29
ubuntu 16:使用系统自带的中文输入法
2019-04-29
k8s单机版[ microk8s ]
2019-04-29
docker系列6 :k8s集群[ 解压安装 ]
2019-04-29
maven- idea: 打包可执行jar
2019-04-29
docker系列2: windows安装docker
2019-04-29
hbase数据转移: 导入导出
2019-04-29
docker系列7: docker搭建mysql
2019-04-29
windows server 2012设置远程连接断开后自动注销
2019-04-29
python基础:list,map,open()文件读写
2019-04-29
Go面向对象-接口
2019-04-29
Go-多路选择和超时控制
2019-04-29
Go-channel的关闭和广播
2019-04-29
Go-任务的取消
2019-04-29
AIX 作为Web Server 使用时,tcp相关的几个参数调整
2019-04-29
自我学习37:请描述一下网页从开始请求到最后展示的完整过程
2019-04-29
自我学习38:如何区分前后端BUG
2019-04-29
自我学习39:接口自动化测试用例&功能测试用例区别
2019-04-29
mirror去兔子补丁下载 附安装教程
2019-04-29
mirror去兔子补丁 v3.0附安装教程
2019-04-29