zoukankan      html  css  js  c++  java
  • 简单的一表对多表的双向关联

    多表的xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <!-- ■■■■■■■■文件的名字是:Customer.hbn.xml -->
     6 <hibernate-mapping>
     7     <!-- 配置类和表结构对的映射 -->
     8     <!-- 用 一个类,和另一个表关联,Hibernate框架的本意就是这样 -->
     9     <class name="com.itheima.domain.Linkman" table="cst_linkman">
    10         <!-- 配置id 见到name属性,JavaBean的属性 见到column属性,是表结构的字段 -->
    11         <id name="lkm_id" column="lkm_id">
    12             <!-- 主键的生成策略 ,这个除了natine  就是uuid -->
    13             <generator class="natine"></generator>
    14         </id>
    15         <!-- 配置其他属性 -->
    16         <property name="lkm_name" column="lkm_name"></property>
    17         <property name="lkm_gender" column="lkm_gender"></property>
    18         <property name="lkm_phone" column="lkm_phone"></property>
    19         <property name="lkm_mobile" column="lkm_mobile"></property>
    20         <property name="lkm_email" column="lkm_email"></property>
    21         <property name="lkm_qq" column="lkm_qq"></property>
    22         <property name="lkm_position" column="lkm_position"></property>
    23         <property name="lkm_memo" column="lkm_memo"></property>
    24         
    25         <!-- 配置多方的xml  多对一的  hello  hello 
    26         name表示的是当前JavaBean中的属性
    27         class 当前属性的全路径
    28         column外键的字段
    29          -->
    30         <many-to-one name="customer" class="com.itheima.domain.Customer" column="lkm_cust_id"></many-to-one>
    31     </class>
    32 
    33 </hibernate-mapping>

    单表的xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <!-- ■■■■■■■■文件的名字是:Customer.hbn.xml -->
     6 <hibernate-mapping>
     7     <!-- 配置类和表结构对的映射 -->
     8     <!-- 用 一个类,和另一个表关联,Hibernate框架的本意就是这样 -->
     9     <class name="com.itheima.domain.Customer" table="cst_customer">
    10         <!-- 配置id 见到name属性,JavaBean的属性 见到column属性,是表结构的字段 -->
    11         <id name="cust_id" column="cust_id">
    12             <!-- 主键的生成策略 -->
    13             <generator class="natine"></generator>
    14         </id>
    15         <!-- 配置其他属性 -->
    16         <property name="cust_name" column="cust_name"></property>
    17         <property name="cust_user_id" column="cust_user_id"></property>
    18         <property name="cust_create_id" column="cust_create_id"></property>
    19         <property name="cust_source" column="cust_source"></property>
    20         <property name="cust_industry" column="cust_industry"></property>
    21         <property name="cust_level" column="cust_level"></property>
    22         <property name="cust_linkman" column="cust_linkman"></property>
    23         <property name="cust_phone" column="cust_phone"></property>
    24         <property name="cust_mobile" column="cust_mobile"></property>
    25         
    26         <!-- 配置一对多  hello hello 
    27         set标签 name属性:表示集合的名称
    28         
    29          -->
    30          <set name="linkmans">
    31          <!-- 需要出现子标签 -->
    32          <!-- 外键的字段 -->
    33          <key column="cust_user_id"></key>
    34          <one-to-many class="com.itheima.domain.Linkman"/>
    35          </set>
    36     </class>
    37 
    38 </hibernate-mapping>

    小小的demo:

     1 package com.itheima.test;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.Transaction;
     5 import org.junit.Test;
     6 
     7 import com.itheima.Utils.HibernateUtils;
     8 import com.itheima.domain.Customer;
     9 import com.itheima.domain.Linkman;
    10 
    11 /**
    12  * 测试一对多
    13  * @author Administrator
    14  *
    15  */
    16 @Test
    17 public class demo1 {
    18     /**
    19      * 最麻烦的 双向关联的方式去保存数据
    20      */
    21     public void run1(){
    22         Session session = HibernateUtils.getCurrentSession();
    23         Transaction tr = session.beginTransaction();
    24         //保存客户和联系人的数据
    25         Customer c1 = new Customer();
    26         c1.setCust_name("美美");
    27         
    28         //创建两个联系人
    29         Linkman l1 = new Linkman();
    30         l1.setLkm_name("熊大");
    31         Linkman l2 = new Linkman();
    32         l2.setLkm_name("熊二");
    33         
    34         //演示双向关联
    35         //单表的设置
    36         c1.getLinkmans().add(l1);
    37         c1.getLinkmans().add(l2);
    38         //多表的设置
    39         l1.setCustomer(c1);
    40         l2.setCustomer(c1);
    41         //保存数据
    42         session.save(c1);
    43         session.save(l1);
    44         session.save(l2);
    45         tr.commit();
    46     }
    47 }

    Hibernate的xml:

    
    
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 <!-- ■■■■■■■■文件名字是:hibernate.cfg.xml -->
     6 <hibernate-configuration>
     7     <!-- 记住,先配置SessionFactory标签,一个数据库对应一个SessionFactory标签 -->
     8     <session-factory>
     9         <!-- 必须也要配置的参数有5个,4大参数,数据库的方言 -->
    10         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    11         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day03</property>
    12         <property name="hibernate.connection.username">root</property>
    13         <property name="hibernate.connection.password">123</property>
    14         <!-- 数据库的方言 -->
    15         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    16 
    17         <!-- 可选配置 -->
    18 
    19         <!-- 映射配置文件 -->
    20         <mapping resource="com/itheima/domain/Customer.hbn.xml"/>
    21         <mapping resource="com/itheima/domain/hibernate.cfg.xml"/>
    22     </session-factory>
    23 
    24 </hibernate-configuration>
    
    
    
    
    
  • 相关阅读:
    Oracle 单引号与双引号的区别
    oracle 生成随机数
    oracle 表空间及查看所有用户的表空间
    字节和字符的区别
    java io
    Oracle 基础
    gvim 常用键
    Python之struct
    Python之MySQLdb
    Python之sqlite3
  • 原文地址:https://www.cnblogs.com/tidhy/p/6697334.html
Copyright © 2011-2022 走看看