简单的一表对多表的双向关联

多表的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>

				
时间: 2024-10-12 20:24:13

简单的一表对多表的双向关联的相关文章

Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!

转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中! Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中

java 散列与散列码探讨 ,简单HashMap实现散列映射表执行各种操作示列

package org.rui.collection2.maps; /** * 散列与散列码 * 将土拔鼠对象与预报对象联系起来, * @author lenovo * */ //土拨鼠 public class Groundhog { protected int number; public Groundhog(int n) { number=n; } @Override public String toString() { return "Groundhog #" + number

python开发mysql:表关系&amp;单表简单查询

一 一对多,多对一 1 1.1 建立多对一 ,一对多的关系需要注意 2 先建立被关联的表,被关联的字段必须保证时唯一的 3 在创建关联的表,关联的字段一定是可以重复的 4 5 1.2 示例: 6 出版社 多对一,多个老师可能在一家出版社 7 一夫多妻 一对多 8 create table dep(. 被关联的字段必须保证唯一 9 id int primary key auto_increment, 10 name varchar(20), 11 comment varchar(50) 12 );

简单数据结构(一)线性表

最简单的结构:线性表 先进先出的结构:队列 先进后出的结构:栈 线性表 线性表数据结构具有以下特征:   有且只有一个"首元素"   有且只有一个"末元素"   除末元素之外,其余元素均有惟一的后继元素   除首元素之外,其余元素均有惟一的前驱元素 对于线性表,主要可进行以下操作:   添加结点   插入结点   删除结点   查找结点   遍历结点   统计结点数 其中线性表也分为:顺序表 and 链表 顺序表:在计算机内,保存线性表最简单.最自然的方式,就是把表

mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.

一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 10000;优化后:Select id from uinfo_jifen where jifen>600000; 2.应尽量避免在where子句中对字段进行函数操作,这将导致mysql放弃使用索引 select uid from imid where datediff(create_time,'2011-11

2016/3/10 数据库简单操作( 创建数据库 创建表 数值类型 主键 外键 自动递增 )

1,在连接下的根目录上点右键,创建数据库      输入数据库名,字符集要设置好,与网页对应起来 点击确定 创建成功2,双击打开数据库     第一个显示的是表 最重要最基础的是表.3,创建表,找到表右键,创建表.     首先要确定列,列名,数据库中不要用中文名来做列名.     再确定数值,类型 bit 布尔型只能存储true false decimal更长可以自己定义 一般用float      char是字符 长度设为1 只能是1 varchar 用来存储字符串 可以设置长度 常用的长度

触发器中的inserted表和deleted表

触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件:然而,不能直接对表中的数据进行更改. inserted和deleted表主要用于触发器中: ·扩展表间引用完整性 ·在以视图为基础的基表中插入或更新数据 ·检查错误并基于错误采取行动 找到数据修改前后表状态的差异,并基于此差异采取行动. Deleted表用于存储DELE

小甲鱼PE详解之输入表(导入表)详解(PE详解07)

捷径并不是把弯路改直了,而是帮你把岔道堵上! 走得弯路跟成长的速度是成正比的!不要害怕走上弯路,弯路会让你懂得更多,最终还是会在终点交汇! 岔路会将你引入万劫不复的深渊,并越走越深…… 在开始讲解输入表(导入表)概念之前,请允许小甲鱼童鞋用简短的几句话来总结之前我们学过的内容,并做进一步的思想综合提升,注意咯! 首先,我们知道PE 文件中的数据被载入内存后根据不同页面属性被划分成很多区块(节),并有区块表(节表)的数据来描述这些区块.这里我们需要注意的问题是:一个区块中的数据仅仅只是由于属性相同

使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的表,为表添加数据. 点击上图中的“加号”图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它,出现下图所示页面 点击图中的红圈里的按钮,新建一个Schema,即数据库(个人理解..),修改一下Name 的值,如  mydat