初学者:SpringBoot整合JPA

SpringBoot整合JPA

1、简介

JPA:Java Persistence API的简称,中文名Java持久层API,是关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Spring Data Jpa:JPA规范的再次封装抽象,底层还是使用的Hibernate的JPA技术实现。通过Spring Data JPA的封装,我们在进行基础的CRUD操作的时候可以不用再去写方法,只需要实现它提供的接口就可以进行操作了

2、实现步骤

2.1、引入jpa相关依赖
2.2、配置application.properties或yml文件jpa相关部分
2.3、配置实体类
2.4、添加持久层,创建实体类对应的repository接口
2.5、测试

2.1、引入jpa相关依赖

 <!--数据库驱动依赖-->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
 <!--Starter for using Spring Data JPA with Hibernate-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

2.2、配置application.properties

    #数据库的地址以及端口号
    spring.datasource.url=jdbc:postgresql://localhost:5432/postgres

    #账号/密码
    spring.datasource.username=postgres
    spring.datasource.password=postgres

    #配置数据库驱动
    spring.datasource.driverClassName=org.postgresql.Driver
    #声明SQL语句的方言,指定连接的语言
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

    #配置自动建表:updata:没有表新建,有表更新操作,控制台显示建表语句
    spring.jpa.properties.hibernate.hbm2ddl.auto=none

    #定义是否显示Hibernate生成的SQL语言,一般在调试阶段设为true,完成后再改成false,这样有利于调试。
    spring.jpa.show-sql=true
    
    # 将SQL脚本进行格式化后再输出
    spring.jpa.format-sql= false
    
   #数据库驱动配置完毕,启动时出现org.postgresql.jdbc.PgConnection.createClob()方法尚未被实作的问题,
   #虽然不影响使用,但是每次启动都会报这个错,在配置文件中配置以下代码即可忽略这个报错
    spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false

注:
      配置自动建表:update:没有表新建,有表更新操作,控制台显示建表语句
当spring.jpa.properties.hibernate.hbm2ddl.auto=update时,程序启动时,控制台输出ddl语句

Hibernate: alter table t_user add column password varchar(255)

2.3、配置实体类

存放业务逻辑需要的实体对象属性或方法

@Data
@Table(name="t_user")//当实体类与其映射的数据库表名不同名时需要使用
@Entity//表明该类 (UserEntity)为一个实体类
public class UserEntity {
    @Id//标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
    @Column(name="id")//列名需要与实体类中列名对应,如不对应需使用@Column注解配置
    private  String id;

    @Column(name="name")
    private String name;

    @Column(name="sex")
    private String sex;

    @Column(name="age")
    private String age;

    @Column(name="password")
    private String password;
}

2.4、添加持久层,创建repository接口


@Repository//spring的注解,主动标识当前类要交给spring容器管理
public interface UserRepository extends JpaRepository<UserEntity,String> {
    int countById(String id);
}

2.4.1、@Repository注解:
Repository注解详情
@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD的功能,而且@Repository是@Component注解的一个派生品,所以被@Repository注解的类可以自动的被@ComponentScan 通过路径扫描给找到。
2.4.2、JpaRepository
JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。
JpaRepository<T, ID extends Serializable>
这个接口提供了JPA的相关功能
List findAll();//查找所有实体
List findAll(Sort sort);//排序 查找所有实体
List save(Iterable<? extends T> entities);//保存集合
void flush();//执行缓存与数据库同步
T saveAndFlush(T entity);//强制执行持久化
void deleteInBatch(Iterable entities);//删除一个实体集合

2.5、测试

2.5.1、controller调用服务类所提供的方法

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/getUserId",method = RequestMethod.GET)
    public Response getCountUserId(@RequestParam String user){
        String a="test";
        if(user!=null&&!"".equals(user)){
            a=userService.getUserIdCount(user);
        }
        return new Response(true,a,1);
    }
}

2.5.2、Service也就是提供服务的类

public interface UserService {
     String getUserIdCount(String id);
}

2.5.3、Service接口对应的实现类

@Service
public class UserImpl implements UserService {
    @Autowired
    private UserRepository userRepo;
    @Override
    public String getUserIdCount(String id) {
       String  a= String.valueOf(userRepo.countById(id));
        return a;
    }
}

2.5.4、调用该接口,成功返回,至此,一个接口的开发就完成了在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值