SpringBoot整合 Spring Data JPA

什么是 Spring Data
Spring Data 是 Spring Boot 底层默认进行数据访问的技术 , 为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等;另外也包含对关系数据库的访问支持

Spring Data 包含多个模块:

  • Spring Data JPA
  • Spring Data KeyValue
  • Spring Data LDAP
  • Spring Data MongoDBSpring Data Redis
  • Spring Data REST
  • Spring Data for Apache Cassandra
  • Spring Data for Apache Geode
  • Spring Data for Apache Solr

Spring Data特点:
Spring Data项目为大家提供统一的API来对不同数据访问层进行操作;

Spring Data 统一的接口:

  1. Repository:统一的根接口,其他接口继承该接口
  2. CrudRepository:基本的增删改查接口,提供了最基本的对实体类CRUD操作
  3. PagingAndSortingRepository:增加了分页和排序操作
  4. JpaRepository:增加了批量操作,并重写了父接口一些方法的返回类型
  5. JpaSpecificationExecutor:用来做动态查询,可以实现带查询条件的分页(不属于Repository体系,支持JPA Criteria 查询相关的方法 )
    在这里插入图片描述
    在这里插入图片描述
    JPA是一种规范,而Hibernate是实现这种规范的底层实现,Spring Data JPA对持久化接口 JPA 再抽象一层,针对持久层业务再进一步统一简化。

**SpringBoot整合Spring Data JPA **

JPA底层遵守是ORM(对象关系映射)规范,因此JPA其实也就是java实体对象和关系型数据库建立起映射关系,通过面向对象编程的思想操作关系型数据库的规范。
1、创建Module
在这里插入图片描述
2. 添加数据源, 新建 jpa 数据库(我们不需要创建数据库,有jpa帮我们创建)
在这里插入图片描述
3. 创建实体类,并使用JPA注解进行配置映射关系:

package com.example.springboot.entity;

import javax.persistence.*;

/**
 * jpa采用的是Orm(对象关系映射)模型
 */
@Entity //说明 它是和数据表映射的类
@Table(name = "tbl_user") //指定对应映射的表名,省略不写默认表名是类同 user
public class User {

    @Id //指定主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "user_name", length = 5)//与数据表对应的一个字段
    private String username;

    @Column //省略不写默认字段名就是属性名
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
//省略get,set
}
  • 类上使用 JPA注解@Entity标注,说明它是和数据表映射的类;

  • @Table(name=“表名”)指定对应映射的表名,省略默认表名就是类名。

  • @Id标识主键,@GeneratedValue(strategy =GenerationType.IDENTITY)标识自增长主键

  • @Column标识字段

  1. 创建UserRepository接口继承JpaRepository,就会crud及分页等基本功能
package com.example.springboot.dao;
import com.example.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * 自定义接口继承JpaRepository,就会有crud操作且分页排序 等功能
 */
// 指定的泛型<操作的实体类,主键的数据类型>
public interface UserRepository extends JpaRepository<User, Integer> {
}

JpaRepository内部封装操作数据库的方法
在这里插入图片描述

  1. JPA 配置在全局配置文件中添加 ( spring.jpa.* 开头)
    在这里插入图片描述
    在这里插入图片描述
    接下来我们直接启动主启动类,看看能否帮我们自动创建数据表
    在这里插入图片描述
    在这里插入图片描述
    表自动创建成功

6.测试方法

package com.example.springboot.controller;

import com.example.springboot.dao.UserRepository;
import com.example.springboot.entity.User;
import com.example.springboot.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.Optional;

@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        Optional<User> userOptional = userRepository.findById(id);
        User user = userOptional.get();
        return user;
    }

    @GetMapping("/user")
    public User addUser(User user) {
        User user2 = userRepository.save(user);
        return user2;
    }


    @Autowired
    IUserService userService;

    @GetMapping("/user2")
    public User addUser2(User user) {
        userService.addUser(user);
        return user;
    }
}

重启,测试:
在这里插入图片描述
返回数据:
在这里插入图片描述
查看数据表中的数据:
在这里插入图片描述

===============================================
记得双击,么么哒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值