spring data jpa简介

spring data jpa

首先要介绍一下JPA,JPA就是Java Persistence API翻译过来就是java持久化API,它是在sun提出的java持久化规范,这些接口都在javax.persistence包下。JPA的出现最要是为了整合ORM框架,从本质上来说,它其实算是一种规范,而它提供的基本都是接口,而非具体实现,Hibernate就是一个不错的实现例子。它两的关系可以类比jdbc与jdbc驱动.

那么Spring Data JPA与JPA的关系?
Spring Data JPA的作用可以理解为在JPA规范的基础下提供了Repository层的实现,你还可以自由的选择一种符合JPA规范的ORM框架。

虽然ORM框架都实现了JPA规范,但是在不同ORM框架之间切换是需要编写的代码有一些差异,而通过使用Spring Data Jpa能够方便大家在不同的ORM框架中间进行切换而不要更改代码。可以看下图类比。在这里插入图片描述

springboot整合spring data JPA demo

首先是配置文件

spring:
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
    properties:
      hibernate.format_sql: true
    open-in-view: false
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true
    username: root
    password: root

选择的orm框架是hibernate
一些属性
show_sql :属性用于指定是否在控制台上输出 SQL 语句

ddl-auto
create:每次运行程序时,都会重新创建表,故而数据会丢失
create-drop:每次运行程序时会先创建表结构,然后待程序结束时清空表
upadte:每次运行程序,没有表时会创建表,如果对象发生改变会更新表结构,原有数据不会清空,只会更新(推荐使用)
validate:运行程序会校验数据与数据库的字段类型是否相同,字段不同会报错
none: 禁用DDL处理

format_sql:格式化sql语句

datasource下就是一些配置数据库的信息

定义实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id",nullable = false)
    private Long id;

    @Basic
    @Column(name="username",nullable = false)
    private String username;
    
    @Basic
    @Column(name="userage",nullable = false)
    private String userage;

    @Basic
    @Column(name="userStatus",nullable = false)
    private Integer userStatus;

    @Basic
    @Column(name = "create_Time",nullable = false)
    private Date createTime;

}

@Id代表主键

@GeneratedValue用于标注主键的生成策略,通过strategy 属性指定
@GeneratedValue注解的strategy属性提供四种值:
 AUTO主键由程序控制, 是默认选项 ,不设置就是这个
IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
 SEQUENCE 通过数据库的序列产生主键, MYSQL 不支持
 Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

@Entity 注解表明这是一个实体bean类型

@Basic 默认添加,写不写都行

@table 代表对应映射的表

@column代表要映射的表中字段,nullable为是否可为空,在企业级开发中一般不可为空

定义Repository层

public interface UserRepository extends JpaRepository<User,Long> {

    User findByUsername(String name);

}

我们只需要继承JpaRepository接口就可以了,其他工作spring data JPA会帮我们完成,自动生成sql。那个类型第一个参数是实体类类类型,第二个参数为主键类型

我们只需要按照spring data JPA的命名规则给方法命名即可!

关键字方法命名sql where 字句
AndfindByNameAndidwhere name= ? and id =?
OrfindByNameOrSexwhere name= ? or sex=?
Is,EqualsfindById,findByIdEqualswhere id= ?
BetweenfindByIdBetweenwhere id between ? and ?
LessThanfindByIdLessThanwhere id < ?
GreaterThanfindByIdGreaterThanwhere id > ?
GreaterThanEqualsfindByIdGreaterThanEqualswhere id > = ?
AfterfindByIdAfterwhere id > ?
BeforefindByIdBeforewhere id < ?
IsNullfindByNameIsNullwhere name is null
isNotNull,NotNullfindByNameNotNullwhere name is not null
LikefindByNameLikewhere name like ?
NotLikefindByNameNotLikewhere name not like ?
StartingWithfindByNameStartingWithwhere name like ‘?%’
EndingWithfindByNameEndingWithwhere name like ‘%?’
ContainingfindByNameContainingwhere name like ‘%?%’
OrderByfindByIdOrderByXDescwhere id=? order by x desc
NotfindByNameNotwhere name <> ?
IgnoreCasefindByNameIgnoreCasewhere UPPER(name)=UPPER(?)

可以看到按照特定的命名方式,spring data JPA就可以自动生成sql语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值