在jap中repository 层怎么写
时间: 2024-05-10 22:17:23 浏览: 125
使用JPA时@Query中的insert语句之对象传参
在 Java 应用程序中,Repository 层通常用于处理数据持久化的逻辑,例如将数据存储到数据库中。下面是一个简单的 Repository 层示例:
```java
public interface UserRepository {
User findById(int id);
List<User> findAll();
void save(User user);
void update(User user);
void delete(User user);
}
```
上面的代码定义了一个 UserRepository 接口,它包含了一些基本的 CRUD(创建、读取、更新、删除)操作。具体实现应该由一个或多个类来完成。例如,下面是一个使用 JDBC 实现 UserRepository 的示例:
```java
public class JdbcUserRepository implements UserRepository {
private final Connection connection;
public JdbcUserRepository(Connection connection) {
this.connection = connection;
}
@Override
public User findById(int id) {
try {
PreparedStatement statement = connection.prepareStatement("SELECT * FROM users WHERE id = ?");
statement.setInt(1, id);
ResultSet result = statement.executeQuery();
if (result.next()) {
return new User(result.getInt("id"), result.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<User> findAll() {
List<User> users = new ArrayList<>();
try {
PreparedStatement statement = connection.prepareStatement("SELECT * FROM users");
ResultSet result = statement.executeQuery();
while (result.next()) {
users.add(new User(result.getInt("id"), result.getString("name")));
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
@Override
public void save(User user) {
try {
PreparedStatement statement = connection.prepareStatement("INSERT INTO users (name) VALUES (?)");
statement.setString(1, user.getName());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void update(User user) {
try {
PreparedStatement statement = connection.prepareStatement("UPDATE users SET name = ? WHERE id = ?");
statement.setString(1, user.getName());
statement.setInt(2, user.getId());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void delete(User user) {
try {
PreparedStatement statement = connection.prepareStatement("DELETE FROM users WHERE id = ?");
statement.setInt(1, user.getId());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上面的代码实现了 UserRepository 接口,使用了 JDBC 进行数据持久化。当需要使用 Repository 操作数据库时,可以通过创建 JdbcUserRepository 实例来实现:
```java
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
UserRepository userRepository = new JdbcUserRepository(connection);
userRepository.save(new User(1, "Alice"));
User user = userRepository.findById(1);
userRepository.update(new User(1, "Bob"));
userRepository.delete(new User(1, "Bob"));
```
上面的代码演示了如何使用 JdbcUserRepository 实例执行 CRUD 操作。在实际开发中,可以根据业务需求和具体技术栈选择合适的数据持久化技术和实现方式。
阅读全文