SSH-Day03客户关系管理系统

2024-01-28 21:08

本文主要是介绍SSH-Day03客户关系管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程内容:

  1. 修改Customer
  2. BaseDao的抽取
  3. BaseAction的抽取
  4. 联系人模块Linkman

修改Customer

问题一

在进入customer/edit.jsp页面的时候,怎么把customer对象传递到页面?方法一:valueStack.put(key,value)/valueStack.push(obj)。方法二:action类都有方法getModel(),struts2会把model存放到context栈中,我们可以通过${model.cust_name}
取出来。

<INPUT class=textbox name="cust_name" value="${model.cust_name }">

问题二

form 表单中select 请选择
一定要加 value="",如果没有value,浏览器会默认设置value=“option显示的值”

<select id="cus_source" name="source.dict_id"><option value="">请选择</option>
</select>

反射获取泛型

怎么获取类上的泛型?

通过反射的方式获得

public class Person<T> {}
public class Student extends Person<User> {}
public class User {
}
Student st = new Student();
//获取父类
Class<?> superclass = st.getClass().getSuperclass();
System.out.println(superclass);
//获取带有泛型的父类
Type genericSuperclass = st.getClass().getGenericSuperclass();
//判断父类是否是ParameterizedType
if(genericSuperclass instanceof ParameterizedType) {ParameterizedType type=(ParameterizedType) genericSuperclass;//取第一个值Class c=(Class) type.getActualTypeArguments()[0];System.out.println(c);//c就是User
}

BaseDao的抽取

把通用的方法抽取到接口中

public interface BaseDao<T> {void add(T t);T findById(Long cust_id);void update(T t);void delete(T t);List<T> findAll();PageBean<T> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria);
}

BaseDaoImpl.java

public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {public Class clazz;public BaseDaoImpl() {Class c = this.getClass();Type superclass = c.getGenericSuperclass();if(superclass instanceof ParameterizedType) {ParameterizedType parameterizedType=(ParameterizedType) superclass;Type[] type = parameterizedType.getActualTypeArguments();clazz=(Class) type[0];}}@Overridepublic void add(T t) {getHibernateTemplate().save(t);}@Overridepublic T findById(Long id) {T t=(T) getHibernateTemplate().get(clazz, id);return t;}@Overridepublic void update(T t) {getHibernateTemplate().update(t);}@Overridepublic void delete(T t) {getHibernateTemplate().delete(t);}@Overridepublic List<T> findAll() {List<T> list = (List<T>) getHibernateTemplate().find("from "+clazz.getSimpleName());return list;}@Overridepublic PageBean<T> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria) {PageBean<T> page = new PageBean<>();page.setPageCode(pageCode);page.setPageSize(pageSize);criteria.setProjection(Projections.rowCount());List<Number> customerList = (List<Number>) getHibernateTemplate().findByCriteria(criteria);if(customerList!=null && customerList.size()>0) {page.setTotalCount(customerList.get(0).intValue());}criteria.setProjection(null);List<T> list = (List<T>) getHibernateTemplate().findByCriteria(criteria, (pageCode-1)*pageSize, pageSize);page.setBeanList(list);return page;}}

BaseAction

把通用的方法、变量抽取到父类中

public class BaseAction extends ActionSupport {// 设置默认值 当前页码private Integer pageCode = 1;// get()是才有效public void setPageCode(Integer pageCode) {if (pageCode == null) {pageCode = 1;}this.pageCode = pageCode;}public Integer getPageCode() {return pageCode;}// 一页显示多少条数据private Integer pageSize = 2;public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public Integer getPageSize() {return pageSize;}public void setVS(String key,Object obj) {ActionContext.getContext().getValueStack().set(key, obj);}public void push(Object obj) {ActionContext.getContext().getValueStack().push(obj);}
}

序列化问题

Customer>Linkman是一对多的关系
Customer.java:

public class Customer {private Set<Linkman> linkmans = new HashSet<Linkman>();
}

customer.hbm.xml:

<!-- 让客户放弃外键的维护的权力 -->
<set name="linkmans" inverse="true"><key column="lkm_cust_id"/><one-to-many class="com.itheima.domain.Linkman"/>
</set>

Linkman

public class Linkman {// 编写一个对象,不要自己newprivate Customer customer;
}

linkman.hbm.xml

<many-to-one name="customer" class="com.itheima.domain.Customer" column="lkm_cust_id"/>

这样在修改customer会报错:
在这里插入图片描述解决方法:

public class Customer {@JSONField(serialize=false)private Set<Linkman> linkmans = new HashSet<Linkman>();
}

这篇关于SSH-Day03客户关系管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654773

相关文章

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro