java如何使用数据库
使用JDBC连接数据库
JDBC(Java Database Connectivity)是Java连接数据库的标准API。以下是使用JDBC连接MySQL数据库的步骤:
-
添加JDBC驱动依赖 在Maven项目中,添加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/mydb"; String username = "root"; String password = "password"; Connection connection = DriverManager.getConnection(url, username, password); -
执行SQL查询
Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM users"); while (resultSet.next()) { String name = resultSet.getString("name"); System.out.println(name); } -
关闭资源
resultSet.close(); statement.close(); connection.close();
使用PreparedStatement防止SQL注入
PreparedStatement可以预编译SQL语句,提高安全性:
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "Alice");
preparedStatement.setInt(2, 25);
preparedStatement.executeUpdate();
使用连接池管理数据库连接
常见的连接池如HikariCP,可以优化连接管理:
-
添加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/mydb"); config.setUsername("root"); config.setPassword("password"); HikariDataSource dataSource = new HikariDataSource(config); -
从连接池获取连接
try (Connection connection = dataSource.getConnection()) { // 执行数据库操作 }
使用ORM框架简化操作
JPA和Hibernate是常用的ORM框架:
-
添加JPA依赖
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.5.Final</version> </dependency> -
定义实体类
@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private int age; // getters and setters } -
使用EntityManager操作数据库
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-pu"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); User user = new User(); user.setName("Bob"); user.setAge(30); em.persist(user); em.getTransaction().commit(); em.close();
使用Spring Data JPA进一步简化
在Spring Boot项目中:
-
添加Spring Data JPA依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> -
定义Repository接口
public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } -
自动注入使用
@Autowired private UserRepository userRepository; public void saveUser(User user) { userRepository.save(user); }
事务管理
使用@Transactional注解管理事务:

@Transactional
public void transferMoney(Long fromId, Long toId, BigDecimal amount) {
User fromUser = userRepository.findById(fromId).orElseThrow();
User toUser = userRepository.findById(toId).orElseThrow();
fromUser.setBalance(fromUser.getBalance().subtract(amount));
toUser.setBalance(toUser.getBalance().add(amount));
userRepository.save(fromUser);
userRepository.save(toUser);
}






