Spring Boot集成Spring Data Jpa

本文介绍如何在SpringBoot项目中集成SpringDataJPA,包括添加依赖、配置数据库、创建实体类、实现JpaRepository接口及测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

Spring Data Jpa是属于Spring Data的一个子项目。Spring Data下有很多子项目,如下图:
在这里插入图片描述

JPA是一个规范,并非具体的实现框架,而Spring Data JPA就是依赖于Hibernate JPA的实现。详细请参考官方文档https://spring.io/projects/spring-data-jpa

Spring Boot集成Spring Data Jpa

创建项目添加依赖

首先创建springboot项目,选择web和sql相关即可。
在这里插入图片描述
完善pom.xml

 		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.15</version>
        </dependency>

数据库准备

创建jpatest数据库,并创建数据库表jpa_user;

    CREATE DATABASE /*!32312 IF NOT EXISTS*/`jpatest` /*!40100 DEFAULT CHARACTER SET utf8 */;

    USE `jpatest`;

    /*Table structure for table `sys_user` */

    DROP TABLE IF EXISTS `jpa_user`;

    CREATE TABLE `jpa_user` (
      `userId` int(10) NOT NULL,
      `username` varchar(20) NOT NULL,
      `sex` char(10) DEFAULT NULL,
      `password` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`userId`),
      UNIQUE KEY `idx_username` (`username`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    /*Data for the table `sys_user` */

    insert  into `jpa_user`(`userId`,`username`,`sex`,`password`) values (1,'testuser','man','21');

修改配置

修改application.yml,添加jpa和连接池相关配置

spring:
  datasource:
    url: jdbc:mysql://192.168.1.105:3306/jpatest?characterEncoding=utf8&useSSL=true
    username: root
    password: Root1234
    driver-class-name: com.mysql.jdbc.Driver
    initialization-mode: always
    type: com.alibaba.druid.pool.DruidDataSource
  jpa:
    hibernate:
      #     更新或者创建数据表结构
      ddl-auto: update
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    #    控制台显示SQL
    show-sql: true

简单实现

1.创建实体类,和数据库表对应

@Entity
@Table(name = "jpa_user")
//Springboot2.2.1集成的Spring data jpa比较新,需要加上如下配置
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class User {
    @Id //主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer userId;

    @Column(name = "username",length = 20) //这是和数据表对应的一个列
    private String username;

    @Column
    private String sex;

    @Column
    private String password;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2.实现JpaRepository接口(简单实现)

public interface UserJpaRepository extends JpaRepository<User,Integer> {
}

3.直接用controller用做测试验证

@RestController
public class UserController {

    @Autowired
    UserJpaRepository userRepository;

    @GetMapping("/user/{userId}")
    public User getUser(@PathVariable("userId") Integer userId){
        User user = userRepository.getOne(userId);
        return user;
    }

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

4.启动项目,使用postman进行测试验证
(1)验证getUser
在这里插入图片描述
(2)验证insertUser
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值