您的位置:首页 > 其它

JPA中常用的注解、默认继承方法和关键字抽象方法

2020-03-29 19:42 531 查看

一、JPA中的常用注解:

1、@Entity:标记在类名上面,作为实体类的标识;

2、@Table:当实体类与其映射的数据库表名不相同时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。

   @Table 标注的常用选项是 name,用于指明数据库的表名。 @Table 标注还有一个两个选项 catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名。

   uniqueConstraints 选项用于设置约束条件,通常不须设置;

3、@Id:设置对象表示符,标识的实体类的属性映射对应表中的主键;

4、@GeneratedValue:设置标识符的生成策略,常与@Id 一起使用。

  参数:strategy 指定具体的生成策略:

    方式一:@GeneratedValue(strategy=GenerationType.AUTO) 也是默认策略, 即写成@GeneratedValue也可;类似于 hibernate 的 native 策略,生成方式取决于底层的数据库。

    方式二:@GeneratedValue(strategy = GenerationType.IDENTITY)指定“自动增长”策略,适用于 MySQL;     方式三:@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “seqtblperson”)指定“序列”策略,常用于 Oracle,其中 generator 表示生成器的名字。         而且还要指定@SequenceGenerator(name =“seqtblperson”, sequenceName = “seqtblperson”, allocationSize = 1)注解配合使用。         其中 name 指定生成器的名字(与 generator 的值一样),sequenceName 指定数据库中定义序列的名字,allocationSize 指定序列每次增长 1。 5、@Column:描述数据库表中该字段的定义,具有以下属性。   (1)name:表示数据库表中该字段的名称,默认情形属性名称一致。   (2)nullable:表示该字段是否允许为 null,默认为 true。   (3)unique:表示该字段是否是唯一标识,默认为 false。   (4)length:表示该字段的大小,仅对 String 类型的字段有效。   (5)insertable:表示在 ORM 框架执行插入操作时,该字段是否应出现 INSETRT 语句中,默认为 true。   (6)updateable:表示在 ORM 框架执行更新操作时,该字段是否应该出现在 UPDATE 语句中,默认为 true。       对于一经创建就不可以更改的字段,该属性非常有用,如对于 birthday 字段。   (7)columnDefinition:表示该字段在数据库中的实际类型。通常 ORM 框架可以根据属性类型自动判断数据库中字段的类型,      但是对于 Date 类型仍无法确定数据库中字段类型究竟是 DATE,TIME 还是TIMESTAMP。      此外,String 的默认映射类型为 VARCHAR,如果要将 String 类型映射到特定数据库的 BLOB或 TEXT 字段类型,该属性非常有用。   (8)@OrderBy:在加载数据的时候可以为其指定顺序。   (9)@Transient:表示该属性并非一个到数据库表的字段的映射,ORM 框架将忽略该属性。       如果一个属性并非数据库表的字段映射。就务必将其标示为@Transient。否则。ORM 框架默认其注解为@Basic 二、默认继承方法:   1、Spring Data JPA 是 Spring Data 技术下的子项目,使用 Spring Data JPA 访问数据只需要数据访问层接口实现 JpaRepository 接口即可。        JpaRepository 接口继承了 PagingAndSortingRepository,QueryByExampleExecutor 接口,所以拥有了它们的 CRUD 操作功能。   2、常用的接口方法:   

 

 三、关键字抽象方法:

  1、方法命名约定:

    (1)条件属性通过条件关键字连接。

    (2)条件属性的首字母必须大写。

  2、命名案例及解释:

  

  (1)And — 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd)根据用户名字和密码查找。 

  (2)Or — 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr)根据用户名或地址查找;

  (3)Between — 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min)查询薪资在min 和 max 之间; 

  (4)LessThan — 等价于 SQL 中的 “<”,比如 findBySalaryLessThan(int max); 

  (5)GreaterThan — 等价于 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);

  (6)IsNull — 等价于 SQL 中的 “is null”,比如 findByUsernameIsNull(); 

  (7)IsNotNull — 等价于 SQL 中的 “is not null”,比如 findByUsernameIsNotNull(); 

  (8)NotNull — 与 IsNotNull 等价;

  (9)Like — 等价于 SQL 中的 “like”,比如 findByUsernameLike(String user); 

  (10)NotLike — 等价于 SQL 中的 “not like”,比如 findByUsernameNotLike(String user); 

  (11)OrderBy — 等价于 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user); 

  (12)Not — 等价于 SQL 中的 “! =”,比如 findByUsernameNot(String user);

  (13)In — 等价于 SQL 中的 “in”,比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection类型,也可以是数组或者不定长参数; 

  (14)NotIn — 等价于 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是Collection 类型,也可以是数组或者不定长参数; 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐