Java 如何从hibernate计算两个字段之间的差异结果并在jsp上显示?

Java 如何从hibernate计算两个字段之间的差异结果并在jsp上显示?,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我正在使用SpringMVC、hibernate和mySQL制作一个简单的CRUD应用程序 我在mySQL中有一个表: CREATE TABLE `product` ( `id` INT NOT NULL AUTO_INCREMENT, `product_name` VARCHAR(45) DEFAULT NULL, `quantity_needed` INT DEFAULT NULL, `status` INT DEFAULT NULL, PRIMAR

我正在使用SpringMVC、hibernate和mySQL制作一个简单的CRUD应用程序

我在mySQL中有一个表:

CREATE TABLE `product` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `product_name` VARCHAR(45) DEFAULT NULL,
    `quantity_needed` INT DEFAULT NULL,
    `status` INT DEFAULT NULL,
     PRIMARY KEY (`id`)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
我有一些基本的修正——列出JSP上的所有元素、添加新元素、更新和删除。 我还想显示一个仅包含产品的单独列表,其中状态值,显示差异。我创建代码只是为了显示列表(没有其他内容)。以下是我的productDAOImpl的一部分:

如上所述,我显示的列表还应该有一个新参数,该参数将被计算(与数据库相差2个整数)。该值将显示在页面上


我该怎么做

尽管这似乎是一种很好且简单的方法,但您永远不应该将域模型对象传播到业务层之外,例如通过在前端使用实体。 您应该做的是创建一个服务层,它有自己的dto,您可以将需要传递的所有信息放到前端

因此,如果您的前端层需要来自后端的特定信息,您将创建一个ProductDTO文件,其中只包含所需的字段,例如productName和priceDifference

服务层将从DAO中检索信息,然后将其转换为DTO,以分离数据源和表示之间的责任。 这样,如果您更改了计算价差的逻辑,您只需替换业务逻辑,而表示层将继续工作

我会改变:

List<Product> theProduct = productDAO.buyList();
List theProduct=productDAO.buyList();

List theProduct=productService.buyList();
ProductDTO是一个简单的POJO,包含您所需的字段,该服务的内容如下:

public List<ProductDTO> buyList() {
    List<Product> myProducts = productDAO.buyList();
    //convert the myProduct list to a list of ProductDTO
    //calculate the priceDifference
    //return the list od DTOs
    return dtoList;
}
public List buyList(){
List myProducts=productDAO.buyList();
//将myProduct列表转换为ProductDTO列表
//计算差价
//返回ODDTO的列表
返回数据集成商;
}
快速脏方法--创建正确的getter

public int getDifference() {
   return quantityNeeded-status;
}
正确的方法是上面提到的@senape

// field for quantityNeeded-status value
@Transient
private int difference;
public int getDifference(Integer quantityNeeded,Integer status) {

    difference=quantityNeeded-status;

    return difference;
}
List<Product> theProduct = productDAO.buyList();
List<ProductDTO> theProduct = productService.buyList();
public List<ProductDTO> buyList() {
    List<Product> myProducts = productDAO.buyList();
    //convert the myProduct list to a list of ProductDTO
    //calculate the priceDifference
    //return the list od DTOs
    return dtoList;
}
public int getDifference() {
   return quantityNeeded-status;
}