java有了数据库支撑,请给出以下功能模块实现的业务逻辑和代码: 1.查询Commodity库中所有的商品;(10分) 2.根据PID查询用户已购买的商品。
时间: 2024-12-30 14:38:15 浏览: 19
在Java中使用数据库进行操作,我们可以使用JDBC(Java Database Connectivity)或者更高级的框架如Spring Data JPA。这里是一个简单的示例,假设我们已经有了Commodity表存储商品信息,以及User表记录用户的购买信息,其中包含PID(产品ID)字段。
1. **查询Commodity库中所有的商品**
```java
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public List<Commodity> getAll Commodities() {
List<Commodity> commodities = new ArrayList<>();
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase", "username", "password");
Statement stmt = conn.createStatement()) {
String sql = "SELECT * FROM Commodity";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
Commodity commodity = new Commodity();
commodity.setId(rs.getInt("id"));
commodity.setName(rs.getString("name"));
// ...其他属性
commodities.add(commodity);
}
} catch (SQLException e) {
e.printStackTrace();
}
return commodities;
}
```
在这个例子中,`Commodity`是自定义的一个实体类,包含了商品的信息。这个方法连接到数据库,执行SQL查询,然后将结果转换成`Commodity`对象并添加到列表中。
2. **根据PID查询用户已购买的商品**
```java
public List<Commodity> getUserPurchasedProducts(int pid, User user) {
List<Commodity> purchasedProducts = new ArrayList<>();
try (Connection conn = ...; // 使用相同的连接
Statement stmt = conn.createStatement()) {
String sql = "SELECT C.* FROM Commodity C JOIN Purchase P ON C.pid = P.pid WHERE P.user_id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, user.getId());
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Commodity commodity = new Commodity();
// 从ResultSet获取数据并填充commodity实例
purchasedProducts.add(commodity);
}
} catch (SQLException e) {
e.printStackTrace();
}
return purchasedProducts;
}
```
这个方法需要一个`Purchase`表,其中包含用户ID(user_id)和产品ID(pid)。通过PreparedStatement的方式传入用户ID,以防止SQL注入,并只返回该用户已经购买的商品。
阅读全文