2018-10-9:美化数据操作界面和Hibernate关联关系

美化操作数据界面

struts中使用一个值栈将使用struts标签和action中的各种成员变量值保存了起来,
方便ognl表达式在页面使用了struts标签的时候可以直接访问而不需要取值。

VO(value object)传值对象,PO(persistent object)持久化对象,数据库关联对象

  1. 单选钮
    ---------struts方式--------------

--------jstl + el表达式方式-----------

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

   
      男:
      女:
   
   
      男:
      女:
   

  1. 下拉列表

name 提交的对应aciton对象的字段 list循环的集合 listkey提交的值 listValue显示的值

Hibernate的关联关系(实体之间的关系)

  • 一对一
    双向和单向
  • 一对多和多对一
    主外键 教师一 和 班级多
    配置一对多:
    1.一的实体类 配置 添加 List 集合为成员变量,要给getter setter方法
    2.在get方法前配置 targetEntity指向多的一方的类型,fetch为抓取策略,默认为延迟加载lazy 查询自身对象时候,没有访问关联对象就不查询关联对象,EAGER为立即抓取,查询自身对象,没有访问关联对象,也立即 外连接查询关联表,joinColunm填写的字段名是 外键字段
@OneToMan(targetEntity=Clazz.class,fetch=FetchType.EAGER)
@JoinColumn(name="tno")

配置多对一:
1.在多的实体类 添加 一 的 类型对象为成员变量 getter setter
2.在对方对象的get方法前添加 targetEntity 对方的类型 joinColum 对方的字段名 insertable updateable表示在插入和更新的时候 不使用 这个字段配置 不使用关联关系

      @ManyToOne(targetEntity= Teacher.class)
    @JoinColumn(name = "tno",insertable=false,updatable=false)

完成 详情页 使用循环 便利出 关联的集合,如果还要访问关联集合 对象的 关联集合 多重循环

  • ${clazz.cno} ${clazz.cname} ${clazz.descript}
    • ${student.sno} ${student.name} ${student.sex} ${student.avgscore} ${student.area}
  • 多对多
    学生和课程多对多(学生表,选课表,课程表)
private List courses;

@ManyToMany(fetch=FetchType=LAZY)
@JoinTable(name="sc",joinColumns={@JoinColumn(name="sno")},
 inverseJoinColumns={@JoinColumn(name="cno")})
//inverse 反向,有控制权的是主,没有控制权的为从
//name是中间表名,joinColumns和中间表提供的外键,本方主键关联的字段名
// inverseJoinColumns 中间表提供的和对方主键关联
public List getCourses(){}

由于不能直接取中间表的其它字段 往往用于查看关联数据 和去掉重复值的统计

通过一对多 + 多对一 实现 多对多,需要查看和管理中间的表的字段
配置参考一对多 + 多对一
2018-10-9:美化数据操作界面和Hibernate关联关系_第1张图片
教师班级与学生的详情页.png

你可能感兴趣的:(2018-10-9:美化数据操作界面和Hibernate关联关系)