目录
方式一:Spring Initializr 的 Web页面创建项目
方式二:使用 IDEA 创建项目
创建一个新的Spring Boot项目
编写实体类
创建一个Spring Boot控制器
创建UserRepository
创建异常类
配置应用程序
运行DemoApplication.java中的main方法,启动应用程序。
首先,我们需要在Maven中创建一个新的Spring Boot项目。在pom.xml中添加所需的依赖,比如Spring Boot Web,JPA,MySQL驱动等。具体核心依赖项如下
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
8.0.23
我们需要先定义一个实体类来映射数据库中的表。在src/main/java目录下创建一个名为“com.example.demo.entity”的包,并在其中创建一个名为“User”的Java类,代码如下:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
在这里,我们使用了JPA(Java Persistence API)来创建实体类。使用@Entity注释来标识这是一个实体类,@Table注释来指定该类映射到数据库中的表。@Id注释将id字段标记为主键,@GeneratedValue指定主键自增策略,@Column指定字段名。
在src/main/java目录下创建一个名为“com.example.demo.controller”的包,并在其中创建一个名为“UserController”的Java类,代码如下:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("")
public List findAll() {
return userRepository.findAll();
}
@GetMapping("/{id}")
public User findById(@PathVariable("id") Long id) {
return userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
}
@PostMapping("")
public User addUser(@RequestBody User user) {
return userRepository.save(user);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User userDetails) {
User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
user.setName(userDetails.getName());
user.setAge(userDetails.getAge());
return userRepository.save(user);
}
@DeleteMapping("/{id}")
public ResponseEntity> deleteUser(@PathVariable Long id) {
User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
userRepository.delete(user);
return ResponseEntity.ok().build();
}
}
在src/main/java目录下创建一个名为“com.example.demo.repository”的包,并在其中创建一个名为“UserRepository”的Java接口,代码如下:
@Repository
public interface UserRepository extends JpaRepository {
}
在这里,我们使用了Spring Data JPA提供的JpaRepository接口,该接口提供了一些常见的CRUD操作。@Repository注解用于将接口标识为一个Spring Bean。
在src/main/java目录下创建一个名为“com.example.demo.exception”的包,并在其中创建一个名为“ResourceNotFoundException”的Java类,代码如下:
@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
private static final long serialVersionUID = 1L;
public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) {
super(String.format("%s not found with %s : '%s'", resourceName, fieldName, fieldValue));
}
}
在这里,我们创建了一个名为“ResourceNotFoundException”的自定义异常类,用于处理资源未找到的情况。使用@ResponseStatus注释来指定返回的HTTP状态码。
在application.properties或application.yml文件中配置应用程序,如端口、数据库连接等。
application.properties配置:
server.port=8080
# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=root# 数据库驱动
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver# JPA配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}