联系人管理-查询列表| 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 PageBean
findAll(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());// 带条件的查询 List
list = (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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:联系人管理-添加/修改/删除联系人/条件查询/解决与客户之间的问题| CRM客户关系管理系统项目实战五(Struts2+Spring+Hibernate)解析+源代码
下一篇:客户管理模块(文件上传-图片/删除-修改客户/条件查询客户)| CRM客户关系管理系统项目实战三(Struts2+Spring+Hibernate)解析+源代码

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月20日 06时11分16秒