以下是详细讲解“搭建简单的Spring-Data JPA项目”的完整攻略。
一、准备环境
首先你需要安装好下列环境:
- JDK
- IDE(比如IntelliJ IDEA、Eclipse等)
- 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技术站