我对Java和Spring有点新鲜,我在尝试完成我所关注的课程的作业时遇到了问题。
我需要做的是在将MV应用程序连接到MySQL数据库的同时在Spring MVC中创建一个在线商店 - 第一个带有客户端的JSP,我可以选择显示,添加,删除和修改客户端 - 具有产品的第二个JSP具有相同的可用选项(显示,添加,删除和修改) - 以及带有销售额的最后一个JSP 或Transactions。
模特/豆类
公共类客户 {
var timing = [1000, 2000, 500, 300, 800],
timeouts
function runinterval() {
timeouts = setTimeout(function() {
clearTimeout(timeouts);
timing.shift();
$(".imgholder").css("background-image", "url(https://unsplash.it/100/100/?random&i=" + new Date().getTime() + ")")
if (timing.length != 0)
runinterval();
}, timing[0])
}
runinterval();
}
公共课促销 {
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;
}
}
问题出在SaleDAO.java类中,其中getSales()方法不允许我从db中检索值。
clients 表具有clientId(PK),名字,姓氏,地址,城市,国家/地区作为行。 产品 - productId(PK),productName,unitPrice,description和unitsInStock 销售 - 与客户(clientId)相关的saleId(PK),client_id(FK),与产品相关的product_id(FK)(productId)。
公共类 SaleDAO {
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;
}
}
答案 0 :(得分:0)
ResultSet.getInt()
会返回int
。
sale.setClientID()
期望参数类型为Client
。
然而你正在打电话
sale.setClientId(rs.getInt("client_id"));
那可能无法编译:{{1}}不是int
。
您的销售类不应包含客户和产品的实例。就像Sale应该代表的数据库行一样,clientId应该是Client
,而不是int
。
或者,如果销售应该代表销售,其客户及其产品,那么您的SQL查询应该返回所有这些信息,而不仅仅是客户端和产品的ID。连接有用的地方。一种效率较低的替代方案是执行3个查询:一个检索销售,另一个检索客户端,第三个检索产品。一旦所有信息都可用,您最终可以创建Sale对象并将其返回。
如果你这样做,那么请将Sale.clientId重命名为Sale.client:该属性代表一个完整的客户端,而不仅仅是客户端的ID。