java - 如何用jdbc实现一对多
问题描述
我正在尝试编写一个程序来管理一些客户。每个客户都有预订,每个预订都有项目。我知道我有一对多的关系,但我不知道该怎么做。
我没有使用 Spring,只有 JDBC。
没有数据库,我这样做了:
public class Client {
private String _fullName;
private String _address;
private String _email;
private String _phoneNumber;
private List<Reservation> _reservations;
}
public class Reservation {
private List<Item> _items;
private int _totalSum;
private boolean _toDeliver;
private String _date;
}
public class Item {
//primary key.
private int _id;
private int _price;
private String _name;
}
我必须申报这些清单吗?如果没有 Spring、Hibernate 和其他东西,是否可以做到这一点?我只想知道如何设计我的程序。
解决方案
是的,您只需使用 JDBC 数据库驱动程序即可完成所有工作。
您要做的第一件事是设计数据库,即您的表和约束等。
然后您返回 Java 并使用 JDBC 查询您的数据库。
一种常见的方法是创建一个 DAO 类,您可以在其中将数据库查询与代码分离。它是这样的:
public String getUserName(String userId) throws SQLException {
String sql = "SELECT name FROM user WHERE user_id = ?";
try (Connection connection = getConnection();
PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setString(1, userId);
try (ResultSet rs = stmt.executeQuery()) {
String name = rs.getString("name");
return name;
}
}
}
这只是一个简单的例子,这里没有错误处理,也没有处理空查询结果,网上有更好的例子来说明如何制作DAO并创建连接。根据您运行此代码的位置,您更喜欢使用连接池来提高效率(另一件事需要阅读更多内容)。
在您的用例中,您将让 DAO 获取数据以制作您的Item
.,创建一个新的Item
并从 DAO 返回它。网上有很多这样的例子,如果您还有其他问题,请不要犹豫。
推荐阅读
- php - Xdebug 未在 docker 容器中启用
- json - .Net Core 3 和 EF Core 3 包含问题 (JsonException)
- android - Android:查看数据绑定到布尔实时数据
- c# - LINQ to Entities - 有时跳过和挂起并延迟执行
- html - 如何在 Bootstrap 4 Sass 中更改按钮背景颜色和颜色?
- python - 多个列表中的位置比较
- python - Tkinter 保存在文本中
- javascript - 修剪 JS 对象以删除带有花括号的额外参数
- kubernetes - 为什么我的情况下 istio 的混音器日志的工作方式不同?
- opencv - 在 Raspberry Pi 中使用 OpenCv 设置 WebCamera 焦点