java 如何获取数据库中的数据
使用 JDBC 连接数据库
在 Java 中,JDBC(Java Database Connectivity)是标准的 API,用于连接和操作数据库。需要加载数据库驱动,创建连接,执行 SQL 查询并处理结果。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "username";
String password = "password";
try {
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table");
while (rs.next()) {
System.out.println(rs.getString("column_name"));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用 PreparedStatement 防止 SQL 注入
PreparedStatement 是 Statement 的子接口,可以预编译 SQL 语句,提高安全性。
String sql = "SELECT * FROM your_table WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1); // 设置参数
ResultSet rs = pstmt.executeQuery();
使用连接池管理数据库连接
数据库连接是昂贵的资源,连接池可以复用连接,提高性能。常见的连接池有 HikariCP、Apache DBCP。
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
config.setUsername("username");
config.setPassword("password");
HikariDataSource ds = new HikariDataSource(config);
Connection conn = ds.getConnection();
使用 ORM 框架简化操作
ORM(Object-Relational Mapping)框架如 Hibernate 或 MyBatis 可以简化数据库操作,将数据库表映射为 Java 对象。
Hibernate 示例
@Entity
@Table(name = "your_table")
public class YourEntity {
@Id
@GeneratedValue
private Long id;
private String name;
// getters and setters
}
Session session = sessionFactory.openSession();
List<YourEntity> results = session.createQuery("FROM YourEntity", YourEntity.class).list();
MyBatis 示例
public interface YourMapper {
@Select("SELECT * FROM your_table WHERE id = #{id}")
YourEntity selectById(int id);
}
SqlSession session = sqlSessionFactory.openSession();
YourMapper mapper = session.getMapper(YourMapper.class);
YourEntity entity = mapper.selectById(1);
使用 Spring Data JPA 简化开发
Spring Data JPA 进一步简化了数据库操作,通过接口自动生成实现。
public interface YourRepository extends JpaRepository<YourEntity, Long> {
List<YourEntity> findByName(String name);
}
@Autowired
private YourRepository repository;
List<YourEntity> entities = repository.findByName("test");
处理事务
数据库操作通常需要事务支持,确保数据一致性。
@Transactional
public void updateEntity(YourEntity entity) {
// 数据库操作
}
关闭资源
数据库连接、Statement 和 ResultSet 需要及时关闭,避免资源泄漏。Java 7 以后的 try-with-resources 可以自动关闭资源。
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM your_table")) {
// 处理结果
} catch (SQLException e) {
e.printStackTrace();
}





