搭建简单的Spring-Data JPA项目

以下是详细讲解“搭建简单的Spring-Data JPA项目”的完整攻略。

一、准备环境

首先你需要安装好下列环境:

  1. JDK
  2. IDE(比如IntelliJ IDEA、Eclipse等)
  3. Maven(或Gradle)

二、创建项目

1.使用IDE新建Maven项目

使用IDE(以IntelliJ IDEA为例)创建一个Maven项目,并添加以下依赖项:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>5.3.5</version>
</dependency>

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-jpa</artifactId>
  <version>2.4.7</version>
</dependency>

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

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <version>1.4.200</version>
</dependency>

2.配置application.yml文件

在resources文件夹下创建application.yml文件,添加以下内容:

spring:
  datasource:
    url: jdbc:h2:mem:test
    driverClassName: org.h2.Driver
    username: sa
    password:
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create-drop # 创建或删除表
    show-sql: true # 将SQL语句在控制台打印出来

三、创建实体类

创建一个实体类,比如:

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

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String password;

    private Integer age;

    private String email;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;

    @Version
    private Integer version;
}

这里使用了Lombok库中的@Data注解,省略了getter/setter方法。同时,为了方便起见,也引入了和JPA相关的注解(比如@Entity、@Table等)。

四、创建Repository

创建一个简单的Repository接口,比如:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    User findByUsername(String username);

    List<User> findByAgeGreaterThan(Integer age);
}

这里使用了Spring Data JPA的JpaRepository,通过继承该接口,就可以获得一些常用的CRUD方法。同时,也定义了两个基于特定查询条件的方法。

五、使用测试数据

为了方便起见,可以在项目启动时插入一部分测试数据,比如:

@Component
public class TestDataInitializer implements ApplicationRunner {

    private final UserRepository userRepository;

    public TestDataInitializer(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Override
    public void run(ApplicationArguments args) {
        User user1 = new User();
        user1.setUsername("Alice");
        user1.setPassword("123456");
        user1.setAge(20);
        user1.setEmail("alice@example.com");
        user1.setCreatedAt(LocalDateTime.now());
        user1.setUpdatedAt(LocalDateTime.now());

        userRepository.save(user1);

        User user2 = new User();
        user2.setUsername("Bob");
        user2.setPassword("123456");
        user2.setAge(25);
        user2.setEmail("bob@example.com");
        user2.setCreatedAt(LocalDateTime.now());
        user2.setUpdatedAt(LocalDateTime.now());

        userRepository.save(user2);
    }
}

六、示例

1.保存数据

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void saveUser(User user) {
        userRepository.save(user);
    }
}

2.查询数据

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User getUserByUsername(String username) {
        return userRepository.findByUsername(username);
    }

    public List<User> getUserByAgeGreaterThan(Integer age) {
        return userRepository.findByAgeGreaterThan(age);
    }
}

通过findByUsername和findByAgeGreaterThan这两个自定义的查询方法,可以非常方便地查询想要的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:搭建简单的Spring-Data JPA项目 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 聊聊Redis的单线程模型

    下面我来详细讲解一下Redis的单线程模型。 Redis的单线程模型 Redis采用单线程模型,每个redis服务进程只有一个线程处理所有客户端的请求。该线程在一个西北曼岛一个时间点处理一个客户端请求,而不是并发处理请求。下面是Redis采用单线程模型的原因: 对于CPU密集型任务,单线程的处理方式可以避免线程间切换所带来的额外开销,提高CPU的利用率; 对…

    Java 2023年5月26日
    00
  • Java编写多功能万年历程序的实例分享

    Java编写多功能万年历程序的实例分享 本攻略将介绍使用Java编写多功能万年历程序的完整过程。 1. 概述 本程序的功能包括: 显示公历日期、星期、农历日期、节气、节日等信息 支持查看指定日期的信息 支持查询指定日期范围内的某个节日的日期 支持查询指定日期范围内的某个节气的日期 支持循环显示节日或节气日期 2. 准备工作 为了编写这个程序,您需要掌握Jav…

    Java 2023年5月20日
    00
  • 详解eclipse中Maven工程使用Tomcat7以上插件的方法

    首先,在Eclipse中导入Maven工程后,我们需要对项目进行如下配置: 打开pom.xml文件,添加如下依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <…

    Java 2023年5月19日
    00
  • JIT的作用是什么?

    以下是关于“JIT的作用是什么?”的详细讲解: JIT的作用是什么? JIT(Just-In-Time)是一种编译技术,它将代码在程序运行时动态编译成机器码。与静态编译不同,JIT在程序运行时才生成真正的可执行代码,因此它可以对代码进行更高效的优化,从而提高程序的性能。 JIT的主要作用包括: 在程序运行时优化代码,以提高程序的性能; 提高代码的可读性,减少…

    Java 2023年5月11日
    00
  • Java 9 中的模块Module系统

    关于Java 9中的模块(Module)系统,这里为您整理了完整的攻略。请您仔细阅读以下文章。 什么是Module系统 Java 9中引入了一种新的概念——Module系统,来管理和组织代码。作为Java9中最重要的新特性之一,模块化系统的引入为我们开发、维护和交付大规模的Java应用程序提供了更多的选择和优化。 为什么引入Module系统 随着时间的推移,…

    Java 2023年5月24日
    00
  • 一个合格JAVA软件工程师应该具备什么

    作为一个合格的JAVA软件工程师,应该掌握以下技能和知识: 技能 1. JAVA基础 熟练掌握Java语言的基本语法、面向对象思想、异常处理等知识 熟悉常用的设计模式,如单例模式、工厂模式、观察者模式等 熟练使用JVM的各种调优和管理手段,如GC、JMX等 2. 数据库 熟悉关系型数据库和非关系型数据库,如MySQL、Oracle、MongoDB等 能够使用…

    Java 2023年5月19日
    00
  • Java实现图书借阅系统

    Java实现图书借阅系统的完整攻略 介绍 本文将介绍如何使用Java编程语言实现简单的图书借阅系统。该系统包括了书籍的添加、删除和查询功能,以及具有借阅和归还功能的用户界面。 开发环境 本文将使用Java编程语言进行开发。Java具有强大的面向对象编程特性,并且易于学习和使用。我们将使用Java的标准库和一些第三方库来实现该系统。 具体的开发环境和所使用的库…

    Java 2023年5月19日
    00
  • Java线程间的通信方式详解

    Java线程间的通信方式详解 在Java中,线程间的通信是指两个或多个线程之间通过某种方式进行交流、协作的过程,Java线程间的通信主要有以下几种方式: 1.共享内存 共享内存是指多个线程之间共享同一块内存区域,通过修改该内存区域来实现线程之间的通信。Java中的共享内存通信方式有synchronized、volatile、wait和notify等。 示例1…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部