为什么Java程序需要连接数据库才能运行?在当今的软件开发领域,Java作为一种广泛使用的编程语言,其强大的功能和灵活性使其成为企业级应用开发的首选,...
2025-11-21 254 Java 数据库连接 在Java程序中 为什么需要连接到数据库才能运行?
在软件开发中,我们经常需要从数据库中提取特定信息,Java作为一种强大的编程语言,提供了多种方式来实现这一需求,本文将详细介绍如何使用Java按条件查询数据库,包括JDBC、Spring框架以及JPA等方法。
JDBC(Java Database Connectivity)是Java访问数据库的标准API,以下是一个简单的示例,展示如何使用JDBC按条件查询数据库。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCExample {
public static void main(String[] args) {
// 加载数据库驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 建立连接
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, user, password)) {
// SQL查询语句
String sql = "SELECT * FROM users WHERE age > ? AND gender = ?";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
statement.setInt(1, 25);
statement.setString(2, "male");
// 执行查询
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
System.out.println("User ID: " + resultSet.getInt("id"));
System.out.println("Username: " + resultSet.getString("username"));
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们通过PreparedStatement来防止SQL注入攻击,并按年龄和性别两个条件查询用户信息。
使用Spring框架进行条件查询
Spring框架简化了数据库操作,使得开发者可以更加专注于业务逻辑,以下是使用Spring Data JPA进行条件查询的示例。

添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
创建一个实体类User:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "users")
public class User {
@Id
private int id;
private String username;
private int age;
private String gender;
// getters and setters...
}
创建一个Repository接口:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
@Query("SELECT u FROM User u WHERE u.age > :age AND u.gender = :gender")
List<User> findUsersByAgeAndGender(int age, String gender);
}
在服务层中使用这个Repository进行查询:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getUsersByConditions(int age, String gender) {
return userRepository.findUsersByAgeAndGender(age, gender);
}
}
使用JPA Criteria API进行条件查询
JPA Criteria API提供了一种类型安全的方式来构建动态查询,以下是使用Criteria API进行条件查询的示例。
import javax.persistence.*;
import javax.persistence.criteria.*;
import java.util.List;
import java.util.stream.Collectors;
public class CriteriaExample {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("example-unit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 创建CriteriaBuilder实例
CriteriaBuilder cb = em.getCriteriaBuilder();
// 创建CriteriaQuery实例,指定返回结果类型为User对象列表
CriteriaQuery<User> cq = cb.createQuery(User.class);
// 定义根查询对象,对应于User实体类
Root<User> root = cq.from(User.class);
// 创建查询条件
Predicate condition = cb.and(cb.greaterThan(root.get("age"), 25), cb.equal(root.get("gender"), "male"));
// 设置查询条件到CriteriaQuery对象上
cq.select(root).where(condition);
// 执行查询并获取结果列表
List<User> users = em.createQuery(cq).getResultList();
em.getTransaction().commit();
em.close();
emf.close();
users.forEach(user -> System.out.println("User ID: " + user.getId() + ", Username: " + user.getUsername()));
}
}标签: Java
相关文章
为什么Java程序需要连接数据库才能运行?在当今的软件开发领域,Java作为一种广泛使用的编程语言,其强大的功能和灵活性使其成为企业级应用开发的首选,...
2025-11-21 254 Java 数据库连接 在Java程序中 为什么需要连接到数据库才能运行?
Java程序与数据库的不解之缘:为何连接是必需?在信息技术飞速发展的今天,Java作为一门广泛应用于企业级开发的编程语言,其强大的跨平台特性和丰富的类...
2025-11-21 255 Java
Java语言与数据库系统的关系解析在信息技术的浩瀚海洋中,编程语言与数据库系统犹如两条并行不悖的河流,各自奔腾向前,又在某些节点交汇融合,Java,作...
2025-11-21 257 Java
Java实现文本框内容存储到数据库的详细教程在开发基于Java的桌面应用程序时,我们经常会遇到需要将用户通过文本框输入的数据保存到数据库中的需求,本文...
2025-11-21 252 Java
发表评论