java如何操作数据库
使用JDBC连接数据库
JDBC(Java Database Connectivity)是Java操作数据库的标准API。通过JDBC可以连接各种关系型数据库,执行SQL语句并处理结果。
引入JDBC驱动依赖(以MySQL为例):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
基本操作流程:
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
String url = "jdbc:mysql://localhost:3306/db_name";
String user = "username";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement
Statement stmt = conn.createStatement();
// 执行查询
ResultSet rs = stmt.executeQuery("SELECT * FROM table_name");
// 处理结果
while(rs.next()) {
String name = rs.getString("column_name");
int id = rs.getInt("id");
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
使用PreparedStatement防止SQL注入
PreparedStatement是预编译的SQL语句,能有效防止SQL注入攻击,提高执行效率。
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "John");
pstmt.setInt(2, 30);
pstmt.executeUpdate();
使用事务管理
JDBC支持事务操作,确保数据一致性。
try {
conn.setAutoCommit(false); // 关闭自动提交
// 执行多个SQL操作
stmt.executeUpdate("UPDATE account SET balance = balance - 100 WHERE id = 1");
stmt.executeUpdate("UPDATE account SET balance = balance + 100 WHERE id = 2");
conn.commit(); // 提交事务
} catch (SQLException e) {
conn.rollback(); // 回滚事务
} finally {
conn.setAutoCommit(true);
}
使用连接池管理连接
数据库连接是宝贵资源,使用连接池可以提高性能。

以HikariCP为例:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
配置连接池:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/db_name");
config.setUsername("username");
config.setPassword("password");
config.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(config);
Connection conn = ds.getConnection();
// 使用连接...
conn.close(); // 实际是归还到连接池
使用ORM框架简化操作
主流ORM框架如Hibernate和MyBatis可以简化数据库操作。

MyBatis示例:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
Mapper接口定义:
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(int id);
@Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
void insertUser(User user);
}
使用JPA规范
Java Persistence API(JPA)是JavaEE的标准ORM规范。
Spring Data JPA示例:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
// getters and setters
}
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}






