我對Java和Spring有點新,在嘗試爲我正在關注的課程完成作業時遇到了問題。如何使用Java中的外鍵從表中檢索值?
我有什麼做的是建立在Spring MVC一個在線商店,而Web應用程序連接到MySQL數據庫 - 與客戶第一個JSP在那裏我將有選擇,顯示,添加,刪除和修改客戶端 - 第二個JSP與產品具有相同的選項可用(顯示,添加,刪除和修改) - 和最後一個JSP與銷售或交易。
型號/豆
公共類客戶 {
private int clientID;
private String firstname;
private String lastname;
private String address;
private String city;
private String country;
public Client(){
}
public Client(int clientId){
this.clientID=clientId;
}
public int getClientID() {
return clientID;
}
public void setClientID(int clientID) {
this.clientID = clientID;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
公共類售 {
private int saleId;
private Client client_id;
private Product productId;
public Sale() {
}
public int getSaleId() {
return saleId;
}
public void setSaleId(int saleId) {
this.saleId = saleId;
}
public Client getClientId() {
return client_id;
}
public void setClientId(Client client_id) {
this.client_id = client_id;
}
public Product getProductId() {
return productId;
}
public void setProductId(Product productId) {
this.productId = productId;
}
}
公共類產品 {
private int productId;
private String productName;
private double unitPrice;
private String description;
private long unitsInStock;
public Product(){}
public Product(int productId){
this.productId=productId;
}
public int getProductID() {
return productId;
}
public void setProductID(int productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(double unitPrice) {
this.unitPrice = unitPrice;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public long getUnitsInStock() {
return unitsInStock;
}
public void setUnitsInStock(long unitsInStock) {
this.unitsInStock = unitsInStock;
}
}
的問題是在SaleDAO.java類,其中getSales()方法不會讓我來檢索值分貝。
客戶端表具有clientId(PK),名,姓,地址,城市,國家爲行。 產品 - productId參數(PK),產品名稱,單價,描述和庫存量 銷售 - saleId(PK),CLIENT_ID(FK)與客戶端(的clientId),PRODUCT_ID(FK)有關產品(productId參數)。
公共類SaleDAO {
private final Connection conn;
public SaleDAO() {
conn = DBConnection.getConnection();
}
public void addSale(Sale sale) {
try {
String sql = "INSERT INTO sales(saleId, client_id, product_id) VALUES (?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, sale.getSaleId());
ps.setInt(2, sale.getClientId().getClientID());
ps.setInt(3, sale.getProductId().getProductID());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void removeSale(int saleId) {
try {
String sql = "DELETE FROM sales WHERE saleId=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, saleId);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void editSale(Sale sale) {
try {
String sql = "UPDATE sales set client_id=? ,product_id=? where saleId=?;";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, sale.getClientId().getClientID());
ps.setInt(2, sale.getProductId().getProductID());
ps.setInt(3, sale.getSaleId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public List getSales() {
List saleList = new ArrayList();
try {
String sql = "SELECT * FROM sales";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Sale sale = new Sale();
sale.setSaleId(rs.getInt("saleId"));
sale.setClientId(rs.getInt("client_id"));
sale.setProductId(rs.getInt("product_id");
saleList.add(sale);
}
} catch (SQLException e) {
e.printStackTrace();
}
return saleList;
}
public Sale getSaleById(int saleId) {
Sale sale = new Sale();
try {
String sql = "SELECT * FROM sales WHERE saleId=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, saleId);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
sale.setSaleId(rs.getInt("saleId"));
sale.setClientID(rs.getInt("client_id"));
sale.setProductID(rs.getInt("product_id"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return sale;
}
}
你有錯誤嗎? – Abdelhak
由於來自SaleDAO的getSales()方法,當訪問viewSales.jsp時,獲得空點異常也遇到第二個問題,即無法將int轉換爲客戶端或產品。我相信這與銷售bean –