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

美化操作数据界面

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

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

  1. 单选钮
    ---------struts方式--------------
    <s:radio list="{'男','女'}" name="teacher.sex" value="#request.teacher.sex"></s:radio>

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

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

   <c:if test="${teacher.sex == '男'}">
      <span class="textspan">男:</span><span class="radiospan"><input class="myradio" type="radio" name="teacher.sex" value="男" checked="checked"></span>
      <span class="textspan">女:</span><span class="radiospan"><input class="myradio" type="radio" name="teacher.sex" value="女"></span>
   </c:if>
   <c:if test="${teacher.sex == '女'}">
      <span class="textspan">男:</span><span class="radiospan"><input class="myradio" type="radio" name="teacher.sex" value="男" ></span>
      <span class="textspan">女:</span><span class="radiospan"><input class="myradio" type="radio" name="teacher.sex" value="女" checked="checked"></span>
   </c:if>

  1. 下拉列表

<s:select name="clazz.tno" list="#request.teachers" listKey="tno" listValue="tname" value="#request.clazz.tno"/>

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

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

  • 一对一
    双向和单向
  • 一对多和多对一
    主外键 教师一 和 班级多
    配置一对多:
    1.一的实体类 配置 添加 List<XXX> 集合为成员变量,要给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)

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

<ul>
            <s:iterator value="#request.teacher.clazzs" var="clazz">
              <li>
               <span>${clazz.cno}</span>
               <span>${clazz.cname}</span>
               <span>${clazz.descript}</span>
               <ul>
                 <s:iterator value="#clazz.students" var="student">
                    <li>
                     <span>${student.sno}</span>
                     <span>${student.name}</span>
                     <span>${student.sex}</span>
                     <span>${student.avgscore}</span>
                     <span>${student.area}</span>
                    </li>
                 </s:iterator>
               </ul>
              </li>
            </s:iterator>
</ul>
  • 多对多
    学生和课程多对多(学生表,选课表,课程表)
private List<Course> courses;

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

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

通过一对多 + 多对一 实现 多对多,需要查看和管理中间的表的字段
配置参考一对多 + 多对一
教师班级与学生的详情页.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,912评论 18 399
  • 1、谈谈你对Struts的理解。 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的...
    慕容小伟阅读 2,956评论 0 13
  • 遇见一部漫画,需要缘分。而喜欢上一部作品,需要的是心与心的共鸣。就像伯牙鼓琴,钟子期闻弦而知雅意。峨峨则意往高山,...
    化浊阅读 310评论 0 3
  • 很喜欢西安,大唐京城感,满满中国味 有次出差,大雁塔边,适逢牡丹盛开。 花朵圆满大气,雍容华贵,盛时极艳。 太圆满...
    天禄琳琅姑姑阅读 216评论 0 0

友情链接更多精彩内容