mysql注解忽略实体类映射_Hibernate框架学习之注解映射实体类

本文详细介绍了Hibernate框架中使用注解进行实体类映射的方法,包括基本实体类映射、属性映射、主键映射、特殊类型属性映射,如枚举、日期时间、集合类型以及组件属性。通过具体的代码示例展示了如何使用@Entity、@Table、@Id、@GeneratedValue等注解,以及如何处理枚举、日期时间、集合和自定义类型属性的映射策略。
摘要由CSDN通过智能技术生成

前面的相关文章中,我们已经介绍了使用XML配置文件映射实体类及其各种类型的属性的相关知识。然而不论是时代的潮流还是臃肿繁杂的配置代码告诉我们,注解配置才是更人性化的设计,于是学习了基本的映射实体类的基本注解,此处做一点总结,后续文章将陆续更新使用注解的方式管理配置各种映射关联关系。本篇主要涉及以下内容:

使用最基本的注解映射一个实体类

使用注解映射属性

使用注解映射主键

其他特殊类型的属性映射

一、使用最基本的注解映射一个实体类

@Entity

@Table(name = "userInfo")

public class UserInfo {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private int id;

private String name;

//省略getter和setter方法

}

//在hibernate.cfg.xml中添加实体类

//这样hibernate就会根据配置文件去查找该实体类并做映射操作

这就是映射一个最简单的实体类所用到的最基本的注解。其中,

@Entity:指定当前被修饰的类是一个实体类,用于映射到数据库中的表。

@Table(name = "userInfo"):详细指定了该类映射到数据库中的哪张表,这里映射到userInfo表。

@Id:指定被修饰的属性将映射到数据表的主键列。

@GeneratedValue(strategy = GenerationType.IDENTITY):该注解指定了主键的生成策略,一般不单独出现,这里指定了主键自增的策略。

33afac1ecbfe

这里写图片描述

二、使用注解映射普通属性

对于实体类中属性的映射,一般我们使用@Column进行修饰。该注解有很多属性:

name:指定该属性映射到数据表中对应的名称

nullable:指定该属性映射的数据表中列是否可以为null,默认为true

unique:指定该属性映射到数据表中的列是否具有唯一约束

length:指定该属性映射到数据表中的列所能保存数据的最大长度,默认是255

默认情况下,我们不使用@Column修饰属性的时候,hibernate会自动以该属性的名称映射到数据表中的列。

我们也可以使用注解@Transient修饰属性,它指明了该属性不会被映射到数据表中某一列,而只是作为一个属性被定义在实体类中。例如:

@Entity

@Table(name = "userInfo")

public class UserInfo {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private int id;

private String name;

@Transient

private int age;

//省略getter,setter方法

}

看看hibernate为我们生成的sql语句:

33afac1ecbfe

这里写图片描述

显然,我们age属性并没有被映射到userinfo表中。

对于枚举类型的属性,我们可以使用@Enumerated注解进行修饰。

在某些特殊情况下,有时我们的实体类属性会被定义为枚举类型,那么对于这种数据库中并无法对应的Java类型,该如何映射呢?Hibernate中提供@Enumerated注解来用于我们映射枚举类型,该注解提供一个value属性,该属性可以取两个值:

EnumType.STRING:该枚举类型的属性映射到数据表的字段的类型是字符串型

EnumType.OR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值