微信登录

数据库操作 - 查询数据 - 执行 SQL 查询语句

Java - Web - Spring 《数据库操作 - 查询数据 - 执行 SQL 查询语句》

一、引言

在 Java Web 开发中,Spring 框架为我们提供了强大的数据库操作能力。当涉及到从数据库中查询数据时,执行 SQL 查询语句是一种常见且直接的方式。本文将详细介绍如何在 Spring 框架下执行 SQL 查询语句来获取数据库中的数据,同时给出具体的演示代码。

二、环境准备

在开始之前,我们需要搭建好基本的开发环境,包括:

  1. JDK:Java 开发工具包,建议使用 JDK 8 及以上版本。
  2. Spring 框架:可以使用 Spring Boot 来简化配置,它集成了 Spring 框架的核心功能。
  3. 数据库:本文以 MySQL 为例,需要安装 MySQL 数据库并创建相应的数据库和表。
  4. 相关依赖:在 Maven 项目中,需要添加 Spring Boot Starter Data JPA 和 MySQL 驱动的依赖。以下是 pom.xml 的示例:
    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-data-jpa</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>mysql</groupId>
    8. <artifactId>mysql-connector-java</artifactId>
    9. </dependency>
    10. </dependencies>

三、数据库表设计

假设我们要创建一个简单的用户表,包含用户的 ID、姓名和年龄。以下是创建表的 SQL 语句:

  1. CREATE DATABASE IF NOT EXISTS test_db;
  2. USE test_db;
  3. CREATE TABLE IF NOT EXISTS users (
  4. id INT AUTO_INCREMENT PRIMARY KEY,
  5. name VARCHAR(50) NOT NULL,
  6. age INT NOT NULL
  7. );
  8. INSERT INTO users (name, age) VALUES ('Alice', 25);
  9. INSERT INTO users (name, age) VALUES ('Bob', 30);

四、Spring 项目配置

application.properties 中配置数据库连接信息:

  1. spring.datasource.url=jdbc:mysql://localhost:3306/test_db
  2. spring.datasource.username=root
  3. spring.datasource.password=your_password
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. spring.jpa.hibernate.ddl-auto=update
  6. spring.jpa.show-sql=true

五、代码实现

1. 创建实体类

创建一个 User 实体类,用于映射数据库中的 users 表:

  1. import javax.persistence.Entity;
  2. import javax.persistence.GeneratedValue;
  3. import javax.persistence.GenerationType;
  4. import javax.persistence.Id;
  5. @Entity
  6. public class User {
  7. @Id
  8. @GeneratedValue(strategy = GenerationType.IDENTITY)
  9. private Long id;
  10. private String name;
  11. private int age;
  12. // 构造函数、Getter 和 Setter 方法
  13. public User() {}
  14. public User(String name, int age) {
  15. this.name = name;
  16. this.age = age;
  17. }
  18. public Long getId() {
  19. return id;
  20. }
  21. public void setId(Long id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public int getAge() {
  31. return age;
  32. }
  33. public void setAge(int age) {
  34. this.age = age;
  35. }
  36. @Override
  37. public String toString() {
  38. return "User{" +
  39. "id=" + id +
  40. ", name='" + name + '\'' +
  41. ", age=" + age +
  42. '}';
  43. }
  44. }

2. 创建 Repository 接口

创建一个 UserRepository 接口,继承 JpaRepository,并使用 @Query 注解执行自定义的 SQL 查询语句:

  1. import org.springframework.data.jpa.repository.JpaRepository;
  2. import org.springframework.data.jpa.repository.Query;
  3. import java.util.List;
  4. public interface UserRepository extends JpaRepository<User, Long> {
  5. // 使用 @Query 注解执行 SQL 查询语句
  6. @Query(value = "SELECT * FROM users WHERE age > :age", nativeQuery = true)
  7. List<User> findUsersByAgeGreaterThan(int age);
  8. }

3. 创建服务类

创建一个 UserService 类,用于调用 UserRepository 中的方法:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.stereotype.Service;
  3. import java.util.List;
  4. @Service
  5. public class UserService {
  6. @Autowired
  7. private UserRepository userRepository;
  8. public List<User> getUsersByAgeGreaterThan(int age) {
  9. return userRepository.findUsersByAgeGreaterThan(age);
  10. }
  11. }

4. 创建控制器类

创建一个 UserController 类,用于处理 HTTP 请求:

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RequestParam;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import java.util.List;
  6. @RestController
  7. public class UserController {
  8. @Autowired
  9. private UserService userService;
  10. @GetMapping("/users")
  11. public List<User> getUsersByAge(@RequestParam int age) {
  12. return userService.getUsersByAgeGreaterThan(age);
  13. }
  14. }

六、测试

启动 Spring Boot 应用程序,访问 http://localhost:8080/users?age=26,可以看到返回的用户列表,这些用户的年龄都大于 26 岁。

七、总结

通过以上步骤,我们成功地在 Spring 框架下执行 SQL 查询语句来查询数据库中的数据。下面是一个简单的总结表格:

步骤 说明
环境准备 安装 JDK、Spring 框架、数据库,添加相关依赖
数据库表设计 创建数据库和表,并插入测试数据
Spring 项目配置 application.properties 中配置数据库连接信息
代码实现 创建实体类、Repository 接口、服务类和控制器类
测试 启动应用程序,访问相应的 URL 进行测试

通过这种方式,我们可以灵活地使用 SQL 查询语句来满足不同的业务需求。同时,Spring 框架提供的 @Query 注解让我们可以方便地执行自定义的 SQL 查询,提高了开发效率。