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 ...
随机推荐
- 学号 20175329 《Java程序设计》第10周学习总结
20175329 <Java程序设计>第十周学习总结 教材学习内容总结 线程与进程 进程时程序的一次动态执行过程.线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程. J ...
- 测试linux服务器是否能接入微信
官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 php.代码 <?php $a = $_GE ...
- linux搭建ftp配置文件
# Example config file /etc/vsftpd/vsftpd.conf## The default compiled in settings are fairly paranoid ...
- vue-cli构建的项目结构解析
参考: https://www.jianshu.com/p/32beaca25c0d
- Cortex-M3 操作模式与特权等级
Cortex-M3支持2个模式(Handler模式.线程模式)和2个特权等级(特权级.非特权级). 当处理器处在线程模式时,既可以使用特权级,也可以使用非特权级. 当处理器处在Handler模式时,总 ...
- EDM数据营销之电商篇| 六大事务性邮件,环环相扣打造极致用户体验!
“以用户为中心”的时代,电商们致力于打造极致的用户体验,想尽各式新颖营销办法,但难免还是会出现营销断层,以至于和用户间无法达到完整的交互. 本次Focussend以邮件营销为例,聚焦用户从浏览到支付等 ...
- 用Python在Android手机上架FTP服务器
当我们没有带数据线却将手机上的文件共享到电脑上时,架个简单的FTP服务器 可以帮我们快速解决问题.以共享手机里的照片为例: 首先将电脑.手机接入同一个wifi. 然后,手机上用QPython执行以下脚 ...
- 学习Oracle数据库入门到精通教程资料合集
任何大型信息系统,都需要有数据库管理系统作为支撑.其中,Oracle以其卓越的性能获得了广泛的应用.本合集汇总了学习Oracle数据库从入门到精通的30份教程资料. 资料名称 下载地址 超详细Orac ...
- 阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
spring加入声明式的事物 配置事物 配置事物管理器 需要一个dataSource,引入上面的dataSource 配置事务通知 引入上面的transactionManager事物管理器 find开 ...
- Sublime Text3学习参考集
1.如何优雅地使用Sublime Text: http://jeffjade.com/2015/12/15/2015-04-17-toss-sublime-text/#three 持续更新中..... ...