021 ssh综合(4)

===========

之前已经实现了客户模块,包括条件查询(带分页),分页查询,注册,登录,添加,修改,删除

现在来实现联系人模块

写好属性写映射,在客户的一方需要加上联系人的集合

在客户的实体里放置联系人的集合,以及在联系人的xml里放客户的

扫描二维码关注公众号,回复: 5447017 查看本文章

创建linkMan的dao和service以及action

还有把dao注入到service,把service注入到action,并且在spring的配置文件里配置

然后就可以做查询了

先在menu.jsp里修改联系人的链接

写action的时候也要写上分页的参数,因为查询联系人也需要分页

写service

写dao

配置struts.xml

现在修改list.jsp界面

写分页

如果出现问题,那么先把外键的是否不为空去掉

实现增删改

跳转到新增联系人的页面

测试后出现如下页面,那么所属客户就必须用列表框来显示,所以还需要在linkMan.action里注入customer的service

查询所有客户并且放入集合当中,list集合在值栈里必须用set来存放

把linkman的add.jsp改成struts2的标签,后面的theme=simple是代表使用原始的,因为struts2本身就有一个嵌套的表格

而下面我们还写了表格,所以加这个防止乱套了

这个headerKey相当于option的value值,而headerValue相当于下拉的名称

headerValue可以用来代替开头那个空值,而listKey才是我们要设置的数值

这个value写cust_name即可,因为list已经在值栈了,所以直接获取

下面是联系人的名称

然后就是保存操作了

用了struts2的标签,不需要写路径

但现实出来的内容性别是这样的,所以要解决一下

修改一下数据库的内容

注意一下,外面是有一个单引号,里面有双引号

还有就是修改联系人的信息

需要出把id当作参数传递

把对象带到页面上去

接下来把add.jsp的页面覆盖edit.jsp即可

左边箭头是值栈直接访问,右边是利用模型驱动,用来回显客户

写一个隐藏id,action修改为update

还有就是删除联系人

也需要传入id

在action里肯定是先查询再删除

然后就是条件查询联系人

但是因为struts2标签里自带表格,所以需要加上simple去掉

在action里添加条件

级联删除

hibernate的模版,默认情况下是可以删除用户a,并且解除和用户b的关联,因为把用户a的外键置空了

如果我们现在需要级联删除,就是直接把关联的客户删了,而不是解除关系

需要配置xml配置(现在需要删除联系人,并且附带把客户删了)

现在还有一个问题

就是如果我们修改 客户的名称,这个客户有2个联系人,一旦修改了客户的名称,那么联系人那边

就不显示客户了,意思就是说这个客户已经没有联系人了

那是因为edit.jsp页面里,没有提交联系人的集合,而我们的客户的bean里面是有联系人的集合的,这时候没有传集合过去

那么就是空,如果是空,那么根据hibernate的特性,就会删除把客户相关联的联系人的外键给置空,所以说这个客户已经没有联系人了

解决的方法就是让 一的一方(客户)放弃外键维护权,让他不能把联系人的外键置空

现在外键只有多的一方维护

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/83514293