hibernate:many to one

傷城~ 2022-06-17 01:47 259阅读 0赞

这里就拿练手的图书馆系统来说吧…
这个案例用到其中的表
tb_book 图书信息表
这里写图片描述
tb_bookcase 书架信息表
这里写图片描述
tb_booktype 图书类型表
这里写图片描述
tb_manager 管理员表(录入员)
这里写图片描述


可以看出,tb_book 表中type、bookcase、manager都是多对一的关系(这里只考虑单向)

先罗列下XXX.hbm.xml 中 标签的常用属性
name:映射类属性的名字
column:关联的字段
class:关联类的名字
cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行save和update操作时级联、delete执行删除操作时级联

lazy:懒加载? 默认true,联表操作时需要设置为false!!!
否则报错调用方法时发生 com.sun.jdi.InvocationException。
查询到的type、bookcase等特殊关系的字段的代理对象类为空。

然后是Book.java的实体类,其他是普通的实体类

  1. public class Book {
  2. private int id;
  3. private String barcode;
  4. private String name;
  5. private BookType type;
  6. private String author;
  7. private String ISBN;
  8. private int price;
  9. private BookCase bookcase;
  10. private Manager manager;
  11. private Date intime;
  12. private int del;
  13. //省略了set、get
  14. }

Book.hbm.xml

  1. <property name="ISBN" column="ISBN"></property>
  2. <property name="price" column="price"></property>
  3. //...上面是常规属性...下面是manyt to one
  4. <many-to-one name="bookcase" column="bookcase" class="BookCase" not-null="true" lazy="false"/>
  5. <many-to-one name="type" column="type" class="BookType" not-null="true" lazy="false"/>
  6. <many-to-one name="manager" column="manager" class="Manager" not-null="true" lazy="false"/>

数据层的BookDaoImpl.java,只是简单查询所有Book对象

  1. public class BookDaoImpl extends HibernateDaoSupport implements BookDao{
  2. @Override
  3. public List<Book> findAll() {
  4. // TODO 自动生成的方法存根
  5. List<Book> books=getHibernateTemplate().loadAll(Book.class);
  6. if (books.size()>0) {
  7. // BookType bookType=books.get(0).getType();
  8. // System.out.println(bookType.getTypename());
  9. return books;
  10. }
  11. return null;
  12. }
  13. }

省去了从数据层到业务逻辑和action,最后在jsp上遍历

  1. <table border="1">
  2. <tr>
  3. <td>编号</td><td>书名</td><td>类型</td>......
  4. </tr>
  5. //通过遍历查询到的集合
  6. <s:iterator value="books">
  7. <tr>//注意取值属性不同
  8. <td><s:property value="id"/></td><td><s:property value="name"/></td><td><s:property value="type.typename"/></td>......
  9. </tr>
  10. </s:iterator>
  11. </table>

如图:

这里写图片描述

很气,强迫症。。。用默认编辑器写的代码图文混杂了,然后重写几次还是这样,又换了这个编辑器写一次!!!

发表评论

表情:
评论列表 (有 0 条评论,259人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Thoughts On <To The Moon>

         许久都没有尝试些新游戏了,近来的工作也确实有些繁忙,慢慢的竟然有些忘却游戏了~幸而上周五去听了下有关独立游戏的课程,开拓自己眼界的同时,更唤起了自己久眠的游戏之心,

    相关 hibernate:many to one

    这里就拿练手的图书馆系统来说吧… 这个案例用到其中的表 tb\_book 图书信息表 ![这里写图片描述][SouthEast] tb\_bookcase 书架