一、spring data jpa 常用注解
1. @Entity :标识实体类是JPA实体,告诉JPA在程序运行时生成实体类对应表
2. @Table :设置实体类在数据库所对应的表名
3. @Id :标识类里所在变量为主键
4. @GeneratedValue :设置主键生成策略,此方式依赖于具体的数据库
5. @Basic :表示简单属性到数据库表字段的映射(几乎不用)
6. @Column :表示属性所对应字段名进行个性化设置
7. @Transient :表示属性并非数据库表字段的映射,ORM框架将忽略该属性
8. @Temporal :
当我们使用到java.util包中的时间日期类型,则需要此注释来说明转化成java.util包中的类型。
注入数据库的类型有三种:
TemporalType.DATE(2008-08-08)
TemporalType.TIME(20:00:00)
TemporalType.TIMESTAMP(2008-08-08 20:00:00.000000001)
9. @Enumerated :
使用此注解映射枚举字段,以String类型存入数据库
注入数据库的类型有两种:EnumType.ORDINAL(Interger)、EnumType.STRING(String)
10. @Embedded 、 @Embeddable :
当一个实体类要在多个不同的实体类中进行使用,而其不需要生成数据库表
@Embeddable:注解在类上,表示此类是可以被其他类嵌套
@Embedded:注解在属性上,表示嵌套被@Embeddable注解的同类型类
11. @ElementCollection :集合映射
12. @CreatedDate 、 @CreatedBy 、 @LastModifiedDate 、 @LastModifiedBy :
表示字段为创建时间字段(insert自动设置)、创建用户字段(insert自动设置)、最后修改时间字段(update自定设置)、最后修改用户字段(update自定设置)
13. @MappedSuperclass :
实现将实体类的多个属性分别封装到不同的非实体类中
注解的类将不是完整的实体类,不会映射到数据库表,但其属性将映射到子类的数据库字段
注解的类不能再标注@Entity或@Table注解,也无需实现序列化接口
注解的类继承另一个实体类 或 标注@MappedSuperclass类,他可使用@AttributeOverride 或 @AttributeOverrides注解重定义其父类属性映射到数据库表中字段。
二、Repository 接口常用命名规范
用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种:
显式命名:在映射配置时,设置的数据库表名、列名等,就是进行显式命名,即通过 @Column 注解配置。
隐式命名:显式命名一般不是必要的,所以可以选择当不设置名称,这时就交由 Hibernate 进行隐式命名,另外隐式命名还包括那些不能进行显式命名的数据库标识符,即不加 @Column 注解时的默认映射规则。
1、基于方法名称命名规则查询
2、基于@Query 注解查询
方法名称命名规则查询
语法格式:
规则:findBy(关键字)+属性名称(属性名称的首字母大写)+查询条件(首字母大写)
And 并且
Or 或
Is,Equals 等于
Between 两者之间
LessThan 小于
LessThanEqual 小于等于
GreaterThan 大于
GreaterThanEqual 大于等于
After 之后(时间)>
Before 之前(时间)<
IsNull 等于Null
IsNotNull,NotNull 不等于Null
Like 模糊查询。查询件中需要自己加%
NotLike 不在模糊范围内。查询件中需要自己加%
StartingWith 以某开头
EndingWith 以某结束
Containing 包含某
OrderBy 排序
Not 不等于
In 某范围内
NotIn 某范围外
TRUE 真
FALSE 假
IgnoreCase 忽略大小写