Hibernate总结(八)--映射文件

本文内容来自尚硅谷,代码来自Hibernate总结(四)--session缓存中1.4创建的helloworld代码基础上编写代码

目录

1hibernate-mapping元素属性介绍

1.1总体介绍下所有属性及其用法。

1.2package用法

2class元素

2.1总体说一下所有属性的

3id元素

3.1id所有的属性介绍

4generator元素

4.1元素介绍

4.2生成主键的策略选择、

4.3increment 标识符生成器

​4.4identity 标识符生成器

4.5sequence 标识符生成器

4.6hilo 标识符生成器

4.7native 标识符生成器

5property元素

5.1各个属性介绍

5.2formula属性介绍

5.2.1映射文件添加配置

5.2.2pojo中增加desc属性

5.2.3在hibernateTest中添加test方法

6hibernate映射类型及sql类型之间的对应关系

6.1整体介绍下

6.2单独说一下日期

6.2.1概述

6.2.2实际使用方式

6.3以下情况必须显示的指定hibernate映射类型

6.4单独说一下大对象类型

6.4.1修改映射文件

6.4.2在hibernatetest中创建一个test

6.4.3显示效果

6.4.4查询存放到数据库的图片信息

7component元素

7.1概念介绍

7.2实例

7.2.1创建一个新的映射关系文件Worker.hbm.xml

7.2.2创建一个Worker的pojo

7.2.3创建一个pay的pojo

7.2.4在hibernatetest中新建一个test

7.2.5效果


 

1hibernate-mapping元素属性介绍

1.1总体介绍下所有属性及其用法。

其中红色代表要讲的,蓝色代表暂时不讲。

1.2package用法

2class元素

2.1总体说一下所有属性的

红色的属性前面都已经遇到了,就不一一说了

3id元素

3.1id所有的属性介绍

4generator元素

4.1元素介绍

4.2生成主键的策略选择、

及用不同的方式来生成主键。一般选择native,有系统自动选择哪种生成方式,便于移植代码。

native标识符生成器依据底层数据库对自动生成标识符的支持能力, 来选择使用 identity, sequence 或 hilo 标识符生成器.

4.3increment 标识符生成器

4.4identity 标识符生成器

4.5sequence 标识符生成器

4.6hilo 标识符生成器

4.7native 标识符生成器

 

5property元素

5.1各个属性介绍

5.2formula属性介绍

5.2.1映射文件添加配置

这是一个派生属性,及数据库中的news表中没有列明为desc的列

5.2.2pojo中增加desc属性

5.2.3在hibernateTest中添加test方法

能够得到desc的值了

6hibernate映射类型及sql类型之间的对应关系

6.1整体介绍下

6.2单独说一下日期

6.2.1概述

6.2.2实际使用方式

 在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型对应
<property name="date" type="timestamp">
    <column name="DATE" />
</property>

<property name="date" type="data">
    <column name="DATE" />
</property>

<property name="date" type="time">
    <column name="DATE" />
</property>

6.3以下情况必须显示的指定hibernate映射类型

6.4单独说一下大对象类型

6.4.1修改映射文件

6.4.2在hibernatetest中创建一个test

6.4.3显示效果

点击

通常数据库只保存图片路径,不用来直接保存图片  

6.4.4查询存放到数据库的图片信息

	@Test
	public void testBlob() throws Exception{

		News news = (News) session.get(News.class, 1);
		Blob image = news.getImage();

		InputStream in = image.getBinaryStream();
		System.out.println(in.available());
	}

7component元素

7.1概念介绍

7.2实例

7.2.1创建一个新的映射关系文件Worker.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-1-2 16:14:33 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="com.atguigu.hibernate.entities">
    <class name="Worker" table="WORKER">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        
        <!-- 映射组成关系 -->
        <component name="pay" class="Pay">
        	<!-- 指定组成关系的组件的属性 -->
        	<property name="monthlyPay" column="MONTHLY_PAY"></property>
        	<property name="yearPay" column="YEAR_PAY"></property>
        	<property name="vocationWithPay" column="VOCATION_WITH_PAY"></property>
        </component>
        
    </class>
</hibernate-mapping>

7.2.2创建一个Worker的pojo

package com.atguigu.hibernate.entities;

public class Worker {
	
	private Integer id;
	private String name;
	
	private Pay pay;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Pay getPay() {
		return pay;
	}

	public void setPay(Pay pay) {
		this.pay = pay;
	}
	
	
	
}

7.2.3创建一个pay的pojo

package com.atguigu.hibernate.entities;

public class Pay {
	
	private int monthlyPay;
	private int yearPay;
	private int vocationWithPay;
	

	public int getMonthlyPay() {
		return monthlyPay;
	}
	public void setMonthlyPay(int monthlyPay) {
		this.monthlyPay = monthlyPay;
	}
	public int getYearPay() {
		return yearPay;
	}
	public void setYearPay(int yearPay) {
		this.yearPay = yearPay;
	}
	public int getVocationWithPay() {
		return vocationWithPay;
	}
	public void setVocationWithPay(int vocationWithPay) {
		this.vocationWithPay = vocationWithPay;
	}
	
	
	
}

7.2.4在hibernatetest中新建一个test

	@Test
	public void testComponent(){
		Worker worker = new Worker();
		Pay pay = new Pay();

		pay.setMonthlyPay(1000);
		pay.setYearPay(80000);
		pay.setVocationWithPay(5);

		worker.setName("ABCD");
		worker.setPay(pay);

		session.save(worker);
	}

7.2.5效果

这三列值就保存进去了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值