第二部分

联系人管理

[整合表又称为 字典表:字典表里面放的是公有数据.

多张表中 抽取出来一样的字段  形成一个字典表]

一、实体类中:

客户实体:一对多 在一方放置多方的集合对象  

联系人实体:多对一 在多方放置一方的实体对象

代码【1】

二,显示客户名称的下拉菜单:先定义list集合,然后从数据库查询数据-放入值栈,同时加上get方法,外部jsp就可以获得数据。

代码【2】表单的

三,联系人新增:

1,准备表单,修改action属性,method属性,表单的name属性

2,服务器准备一个Action接受数据

3,处理数据

4,响应结果,此处暂时不写,跳转到查询所有。

四,联系人查询-条件查询

1.查询出客户信息:修改超链接,访问action,action查询数据,转发到list.jsp

2.查询联系人信息:

i:在action中查询所有联系人数据即可(查询所有)

ii:在action中按条件查询(条件查询)没有添加条件,hql ->from Linkman.

有条件,那么拼接到hql之后(性别 所属客户)。

五、关于eclipse和数据库设置编码 格式的问题:

1,在数据库show VARIABLES like "CHARACTER%"可以查看数据的编码格式。在具体的表中,进行改变。

2,eclipse==》window-->general-->content Type-->text-->java手写UTF-8

3,eclipse==》window-->workspace

4,右击属性--》resource

5,jdbc.url = jdbc:mysql:///design_ssh?useUnicode=true&characterEncoding=UTF-8

六,联系人删除,考虑到级联删除

  1. 点击删除,需要提示用户,是否确定删除
  2. 如果点击确定删除,使用js访问服务器的action方法,删除数据。
  3. 删除成功后,跳转到查询所有的案例上

 

  1. 删除时,需要注意的是,单表删除(直接删除就好)和级联删除(客户和联系人一起删掉)
  2. 级联删除,存在多表之间的关系,需要父表数据 和子表数据一并删除。
  3. 第一:客户action表上,删除时:先获得客户,再删除客户,第二:客户表,list集合上面,添加级联删除。

代码【3】

七、联系人修改

  1. 需要根据id查询出对应联系人的信息,并且将联系人信息放入值栈
  2. 请求转发给edit.jsp显示,查询出客户的信息(以上两点action需要做的事情)

edit.jsp和add.jsp一样的,需要显示联系人的数据,客户数据且需要被选中。

  1. 超链接添加一个跳转的地址,携带lkmId
  2. 在action中查询出客户数据
  3. 以上的2个数据,放入值栈
  4. 请求转噶给edit.jsp
  5. 页面显示:客户+联系人+选中客户的信息。

修改数据:

  1. 需要修改页面,添加隐藏域,设置id属性
  2. 修改action地址,input的name属性,从add.jsp页面复制过来。
  3. action获取数据,直接修改

八、分页查询

页面需要的数据:

  1. 总记录数 totalRecord  totalCount
  2. 当前页  pageNumber  currentPage
  3. 需要有原本分页数据  List  data
  4. 总页数  totalPage
  5. 每页显示个数pageSize
  6. 开始索引startIndex 
  7. 页面开始和结束 start  end

代码步骤:

  1. 把查询总记录数放在前面,查询分页数据放在后面。理由:查询分页数据放在后面,后自动封装 开始索引和每页显示个数,不能拆分。
  2. 投影查询可以自己设置,后面涉及到分页数据查询,可以把投影查询设置为null,会覆盖之前的投影。
  3. 查询分页数据,传入离线对象,把开始索引和每页显示个数这2个参数,封装到离线对象中。如果后面查询总记录数,使用参数,不能拆分。

 

代码【1】

//【Customer.java】
//集合为什么需要实例化? 因为 操作的同时 如果不提前实例化 可能会出现 需要在外部先实例化集合 然后赋值
//如果已经提前赋值 可以直接获得对象 操作即可
@OneToMany(targetEntity=Linkman.class,mappedBy="customer")
private List<Linkman> linkmans = new ArrayList<>();	

//【Linkman.java】
//描述多对一
//private String lkm_cust_id;// '客户id', 外键
@ManyToOne(targetEntity=Customer.class)
@JoinColumn(name="lkm_cust_id" , referencedColumnName="cust_id")
private Customer customer;

代码【2】

    //返回客户集合数据,同时加上get方法,外部就可以获得数据。
	private List<Customer> customerList;
	
	public List<Customer> getCustomerList() {
		return customerList;
	}
	@Action("linkmanAction_addUI")
	public String addUI() {
		//先定义list集合,然后从数据库查询数据-放入值栈,同时加上get方法,外部jsp就可以获得数据。
		customerList = customerService.findAll();
		return "addUI";
	}

代码【3】

customer.java中
@OneToMany(targetEntity=Linkman.class,mappedBy="customer",cascade=CascadeType.REMOVE)
private List<Linkman> linkmans = new ArrayList<>();
	

    customerAction.java中
	@Action("customerAction_delete")
	public String delete() {
		//获取客户,删除客户(考虑到级联删除)从数据库获得list集合,才可以进行级联删除【删除客户的同时,联系人也删除】  
		Customer tempCustomer = customerService.findByCustId(customer);
		customerService.deleteByCustId(tempCustomer);
		return "findAll";
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值