===========
之前已经实现了客户模块,包括条件查询(带分页),分页查询,注册,登录,添加,修改,删除
现在来实现联系人模块
写好属性写映射,在客户的一方需要加上联系人的集合
在客户的实体里放置联系人的集合,以及在联系人的xml里放客户的
创建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的特性,就会删除把客户相关联的联系人的外键给置空,所以说这个客户已经没有联系人了
解决的方法就是让 一的一方(客户)放弃外键维护权,让他不能把联系人的外键置空
现在外键只有多的一方维护