如何在SpringMVC中从DB中删除

时间:2016-12-07 00:40:53

标签: spring-mvc service controller repository spring-data-jpa

以下代码应使用orderID删除某些Order。我对方法的参数感到困惑,好像这个方法依赖于orderID,这怎么会起作用?

PriceBookEntry

我有一个订单实体,以及一个扩展CRUD的OrderRepo。 服务业务逻辑位于Controller(上方)中,Controller具有OrderService的@Autowire。

谢谢(仍然习惯于SpringMVC / JPA数据,因此对基本问题表示歉意)

1 个答案:

答案 0 :(得分:0)

你可以传递你需要的参数;您的方法可以没有参数。你需要使用N个参数。

<强>阐释: 1。@RequestParam(value="orderId", required=false, defaultValue="-1") int orderId - 这将是您requestUrl中的参数,例如:localhost:8080/deleteSomething?orderId=11

2. Model model - 此param用于发送视图orderList,可以在jsp中作为$ {orderList}

进行访问

如果在视图中传递了一些参数,或者您需要在视图中传递参数,则必须使用Map<String, Object> model,在您的情况下,它是不必要的。

//Autoware your service upper 

public String orderDelete(@RequestParam("orderId") int orderId) {
    orderService.deleteOrder(orderId)

    return "someform/orderMaster";

}

是的,首先从服务中删除您的值并从repo中删除后,这是不正确的。查看如何实施repo +服务类。

<强>回购:     //创建将存储所有操作的界面

@Repository
public class OrderRepository implements OrderDAO {

//you may init it there or create a bean and autoware your session
private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sf) {
    this.sessionFactory = sf;
}

@Override
public void addOrder(Order order) {
    Session session = this.sessionFactory.getCurrentSession();
    session.persist(order);
}

@Override
public void updateOrder(Order order) {
    Session session = this.sessionFactory.getCurrentSession();
    session.update(event);
}

@Override
public void deleteOrder(int id) {
    Session session = this.sessionFactory.getCurrentSession();
    Event e = (Event) session.load(Order.class, new Integer(id));
    if (null != e) {
        session.delete(e);
    }
}

<强>服务

@Service
public class EventService {

@Autowired
private OrderDAO orderDAO;
//init somewhere bean orderDAO

   public void setOrderDAO(OrderDAO orderDAO) {
       this.orderDAO = orderDAO;
   }

   @Transactional
   public void addOrder(Order order) {
       orderDAO.addOrder(order);
   }

   @Transactional
   public void updateOrder(Order order) {
       orderDAO.updateOrder(order);
   }

   @Transactional
   public void deleteOrder(int id) {
       orderDAO.deleteOrder(id);
   }
}