JPA的基本使用(单表)

JPA的使用

一、JPA介绍

Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作

二、JPA实体类的创建

1. 实体类注解

@Data
@Entity 
@Table(name = "表名", schema = "用户名") 
@NoArgsConstructor  // 生成一个无参数的构造方法
@AllArgsConstructor // 会生成一个包含所有变量
@GenericGenerator(name = "uuid", strategy = "uuid")

2. 主键

 @Id 
 @GeneratedValue(generator = "uuid")
 @Column(name="ID")
 private String id;

3. 其他参数

 @Column(name="NAME")
 private String name;
 @Column(name="TIME")
 private Date time;

4. 一对多

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER,mappedBy = "多方属性名") 
@OrderBy("排序字段 ASC")

5. 多对一

@ManyToOne(cascade={CascadeType.REFRESH},fetch = FetchType.LAZY) 
@JoinColumn(name="外键名称")

6. 其他注解

 @JsonIgnore // 一般标记在属性或者方法上,返回的json数据即不包含该属性。
 @Transient  //不维护字段

7. 级联操作注解
@OneToMany或者@ManyToOne

  1. CascadeType.REMOVE
    Cascade remove operation,级联删除操作。
    删除当前实体时,与它有映射关系的实体也会跟着被删除。

  2. CascadeType.MERGE
    Cascade merge operation,级联更新(合并)操作。
    当Student中的数据改变,会相应地更新Course中的数据。

  3. CascadeType.DETACH
    Cascade detach operation,级联脱管/游离操作。
    如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了。它会撤销所有相关的外键关联。

  4. CascadeType.REFRESH
    Cascade refresh operation,级联刷新操作。

  5. CascadeType.ALL
    Cascade all operations,清晰明确,拥有以上所有级联操作权限

  6. FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载

  7. FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载

三、简单方法的使用

预先生成方法

Spring Boot Jpa 默认预先生成了一些基本的CURD的方法,例如:增、删、改等等

  1. 继承 JpaRepository
  public interface UserRepository extends JpaRepository<User, Long> {
    }
  1. 使用默认方法
@Test
public void testBaseQuery() throws Exception {
	User user=new User();
	userRepository.findAll();
	userRepository.findOne(1l);
	userRepository.save(user);
	userRepository.delete(user);
	userRepository.count();
	userRepository.exists(1l);
	// ...
}
  1. 自定义简单查询

自定义的简单查询就是根据方法名来自动生成 SQL,主要的语法是findXXBy,readAXXBy,queryXXBy,countXXBy, getXXBy后面跟属性名称:

User findByUserName(String userName);

也使用一些加一些关键字And 、 Or

User findByUserNameOrEmail(String username, String email);

修改、删除、统计也是类似语法

Long deleteById(Long id);
Long countByUserName(String userName)

摘抄转载:JPA概念解析
更多JPA操作学习
摘抄转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值