SpringDataJpa实体类常用注解
最近公司在使用SpringDataJpa时,需要创建实体类,通过实体类来创建数据库表结构,生成数据库表。
下面我们就来看下在创建实体类时一些常用的注解吧!!!
1.实体类常用注解
@Entity
标识这个实体类是一个JPA实体,告诉JPA在程序运行的时候记得生成这个实体类所对应的表
@Table(name = "自定义的表名")
自定义设置这个实体类在数据库所对应的表名,默认是实体类名。注:Mysql关键字不要设置为实体类,会发生创建表不成功的问题。例如:leave
@org.hibernate.annotations.Table(appliesTo = "t_holiday_info", comment = "节假日信息表")
定义表的注释,用来了解表的内容
@Id
把这个类里面所在的变量设置为主键Id
@GeneratedValue
设置主键的生成策略,这种方式依赖于具体的数据库,如果数据库不支持自增主键,那么这个类型是没法用的
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "repair_seq"):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。
例如:

@Basic
表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXxxx()方法,默认 即为 @Basic fetch: 表示该属性的读取策略,有EAGER和LAZY两种,分别表示主支抓取和延迟加载,默认为EAGER.
@Column
@Column表示列的说明,如果字段名与列名相同,则可以省略。@Column注解属性详细说明
(1)name属性:被标注字段在数据库表中所对应字段的名称;
(2)length属性:表示该字段的长度,当字段的类型为varchar时,该属性才有效果,默认为255个字符;
(3)nullable属性:表示该字段是否可以为null值,默认是true。
(4)unique属性:表示该字段是否为唯一标识,默认fasle。
(5)precision和scale属性:precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
@Transient
表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性. 如果一个属性并非数据库表的字段映射,就务必将其标示为 @Transient ,否则,ORM框架默认其注 解为 @Basic
@Temporal
@Temporal注解表示格式化时间日期。有三种,默认是@Temporal(TemporalType.TIMESTAMP)。具体如下:
(1)@Temporal(TemporalType.DATE):日期,页面取得结果格式如:2016-08-05
(2)@Temporal(TemporalType.TIME):时间,页面取得结果是: 13:46:25
(3)@Temporal(TemporalType.TIMESTAMP):时间和日期,页面取得结果是:2016-08-05 13:46:25
注解方式有两种:
写在字段上:
@Temporal(TemporalType.TIMESTAMP)
private Date birthday;
写在 getXxx方法上:
@Temporal(TemporalType.DATE)
@Column(name = "birthday", length = 10)
public Date getBirthday() {
return this.birthday;
}
@Enumerated("需要定义存入数据库的类型”)
使用@Enumerated映射枚举字段,我这里为性别建立了性别的枚举类型,而后面跟上的是存入数据库以String类型存入。
实体类示例(Customer):




@DateTimeFormat
因为传入的参数是 String 类型的,而用来接收参数的 DateVo 的 date 属性是 java.util.Date 类型的,类型无法转换
可以使用 Spring 的 @DateTimeFormat 注解格式化参数
假如注解为:
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss")
则传入的参数应该是这样的:
2018/08/02 22:05:55
否则会抛出异常。
@JsonFormat
1.使用maven引入@JsonFormat所需要的jar包,我贴一下我这里的pom文件的依赖
<!--JsonFormat--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>2.在你需要查询出来的时间的数据库字段对应的实体类的属性上添加@JsonFormat
import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; public class TestClass { //设置时区为上海时区,时间格式自己据需求定。 @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8") private Date testTime; public Date gettestTime() { return testTime; } public void settestTime(Date testTimee) { this.testTime= testTime; }}这里解释一下:@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
pattern:是你需要转换的时间日期的格式
timezone:是时间设置为东八区,避免时间在转换中有误差
提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别
3.完成上面两步之后,我们用对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是一个符合我们设置的时间格式了
注解@JsonFormat主要是后台到前台的时间格式的转换
注解@DataFormAT主要是前后到后台的时间格式的转换
表的
SpringDataJpa实体类常用注解的更多相关文章
- spring boot JPA中实体类常用注解
spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...
- eclipse逆向生成hibernate的实体类(注解和配置文件)
eclipse从数据库逆向生成Hibernate实体类(注解和配置文件) 分类: hibernate 数据库 java 2011-10-22 21:28 2915人阅读 评论(8) 收藏 举报 做项目 ...
- 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题
一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...
- 学习Spring-Data-Jpa(三)---关联关系常用注解
1.@JoinColumn: 用于指定 连接实体关联或元素集合的列. 属性 name: 外键列的名称,它所在的表取决于上下文. 如果连接是使用外键映射策略的一对一或多对一映射,则外键列位于源实体或可嵌 ...
- JPA实体的常用注解
@Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...
- Hibernate 关于实体映射常用注解
注解 类注解(写在类上面的) @Entity 标明实体类 @Table(name="数据库标明") 生成数据库时的表名由这个决定 @DynamicInsert ...
- springboot+jsp+mybatis项目实例(后台成功,但是无法跳转jsp页面,没有实体类的注解,看springboot+jsp第二弹相关配置,即可成功配置jsp)
SpringBoot是用来简化SpringMvc开发的项目,这里自然要整合mybatis等持久化框架! 先看看项目目录: 一.在pom.xml中配置依赖jar包:<project xmlns=& ...
- SpringDataJpa 实体类过滤伪删除
当需要过滤实体类的数据时,根据伪删除字段进行过滤,需要使用Hibernate提供的@Where注解 使用方式: @Entity(name = "Account") @Where( ...
- Users is not mapped(Hibernate实体类采用注解)
今天做简单的登陆验证web应用时,用HQL语句查询数据表时 总是出现Users is not mapped [from Users u where u.username=? and u.passwor ...
随机推荐
- ubuntu下如何使得普通用户能够启动wireshark?
一. 将dumpcap的用户组更改为wireshark sudo chgrp wireshark /usr/bin/dumpcap 二. 设置其他用户也具有与root一样的权限来执行dumpcap s ...
- Struts2中国际化
1. 写资源文件 Msg.properties 默认的语言环境: 找不到配置就找它 Msg_en_US.properties 美国 2. 加载 <constant name=" ...
- 代码实现:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
package com.loaderman.test; import java.io.File; import java.io.FilenameFilter; public class Test { ...
- Tooltip 文字提示
常用于展示鼠标 hover 时的提示信息. 基础用法 在这里我们提供 9 种不同方向的展示方式,可以通过以下完整示例来理解,选择你要的效果. 使用content属性来决定hover时的提示信息.由pl ...
- Linux搭建ftp服务器简单教程及使用方法
参考文章:https://www.waitig.com/linux-or-centos-install-vsftpd-and-setup-it.html 步骤概括如下: 安装:yum install ...
- python 类中__int__和__str__的使用
class F: def __str__(self): return 'hello china' def __int__(self): return 123 res = F()print(res) # ...
- spring Ioc/DI的理解
学习spring的童鞋都知道,spring中有两个非常重要的点,Ioc(控制反转)与DI(依赖注入),对于初级玩家来说,这两个概念可能有点模棱两可的感觉,今天就谈下自己的一点理解,不足请多多指教!!! ...
- Centos 在线安装 nginx
centos 在线安装 nginx 安装nginx 参考文档: http://nginx.org/en/linux_packages.html 中的RHEL/CentOS章节,按照步骤安装repo ...
- 7-1 shell编程基础之二
shell编程基础之二 算数运算 bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 实现算术运算: (1) let var=算 ...
- 【HANA系列】SAP HANA SQL从给定日期中获取月份
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...