一对多,多对一(数据库的主外连接)

  • 主表
    • Order.hbm.xml
      • <hibernate-mapping>
        • <!-- 配置实体类对应的数据表格 -->
        • <class table="tt_order" name="com.zking.entity.Order">
          • <id name="orderId" type="java.lang.Integer">
            • <column name="order_id"></column>
            • <generator class="increment"></generator><!-- increment自动替增 -->
          • </id>
          • <property name="orderNo" type="java.lang.String">
            • <column name="order_no"></column>
          • </property>
          • <!-- 如果需要进行删除的级联操作,那么需要在这里加上inverse=true将对方设置为主控方 -->
          • <!-- 一对多使用的标签 cascade对应多的一方也会新增修改 , inverse(只会再删除有用,true将对面设为主控方,先删对面) ,all新增修改删除-->
          • <set name="orderItems" inverse="true" cascade="all">
            • <!-- column写将两个表关联起来的外键(多的那一方引用的外键) -->
            • <key column="oid"></key>
            • <!-- 关联的实体类,找到实体类然后找到映射文件 -->
            • <one-to-many class="com.zking.entity.OrderItem" />
          • </set>
        • </class>
      • </hibernate-mapping>
  • 从表
    • OrderItem.hbm.xml
      • <hibernate-mapping>
        • <class table="tt_order_item" name="com.zking.entity.OrderItem">
          • <id name="orderItemId" type="java.lang.Integer">
            • <column name="order_item_id"></column>
            • <generator class="increment"></generator>
          • </id>
        • <property name="productId" type="java.lang.Integer">
          • <column name="product_id"></column>
        • </property>
        • <property name="quantity" type="java.lang.Integer">
          • <column name="quantity"></column>
        • </property>
        • <!--insert,是否能新增,update,是否能修改 -->
        • <property name="oid" type="java.lang.Integer" insert="false" update="false">
          • <column name="oid"></column>
        • </property>
        • <!-- 多对一关联关系映射配置 --><!--name属性,class,引用的类 -->
        • <many-to-one name="order" class="com.zking.entity.Order">
          • <column name="oid"></column><!-- 被引用的外键声明-->
        • </many-to-one>
      • </class>
    • </hibernate-mapping>
  • Order实体类 一对多
    • private Integer orderId;
    • private String orderNo;
    • //引用的类b将被定义为类a的属性(放在哪里哪个就是类a)
    • private Set<OrderItem> orderItems=new HashSet<>();
    • //延迟加载的
    • private Integer lazyInt=0;
    • setget;
    • //不能两个同时写toString因为order包含orderitem,如果orderitem在写一个toString他就会在到order里面找
  • OrderItem实体类 多对一
    • private Integer orderItemId;
    • private Integer productId;
    • private Integer quantity;
    • private Integer oid;
    • private Order order;//引用的类b将被定义为类a的属性(放在哪里哪个就是类a)
  • 自表关联(数据库的无限级分类)
    • 实体类的结构,toString()子节点父节点给其中的一个
    • TreeNode.hbm.xml(实体类的映射配置文件)记得去核心配置文件注册
    • <hibernate-mapping>
      • 和一对多差不多只是结合到一起了
      • <class table="t_sys_tree_node" name="com.zking.entity.TreeNode">
        • <id name="treeNodeId" type="java.lang.Integer">
          • <column name="tree_node_id"></column>
          • <generator class="increment"></generator><!-- increment自动替增 -->
        • </id>
        • <property name="treeNodeName" type="java.lang.String">
          • <column name="tree_node_name"></column>
        • </property>
        • ........
        • <property name="parentNodeId" type="java.lang.Integer" update="false" insert="false">
          • <column name="parent_node_id"></column>
        • </property>
        • <!--一对多双向自关联之子节点配置 --><!--name:属性名 ,inverse:主控方为对方 -->
        • <set name="children" inverse="true" cascade="save-update">
          • <key column="parent_node_id" />
          • <one-to-many class="com.zking.entity.TreeNode" />
        • </set>
          • 如果实体类用的是list集合,就得用<bag>标签,用list和set,差不多list多一个排序
        • <!-- 父节点 -->
        • <many-to-one name="parent" class="com.zking.entity.TreeNode"column="parent_node_id" />
      • </class>
    • </hibernate-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值