2016-12-07 16 views
0

下面的代碼應該使用orderID刪除一些Order。我對這個方法的參數感到困惑,就好像這個方法依賴於一個orderID一樣,這將如何工作?如何在SpringMVC中從數據庫中刪除

//code I am trying to replace 

public String delete(@RequestParam(value="orderId", required=false, defaultValue="-1") int orderId, Model model) { 
SomeApp.getStore().getOrderList().removeIf(p -> (p.getId() == orderId)); 
model.addAttribute("orderList", SomeApp.getStore().getOrderList()); 

//with this 
public String orderDelete(Map<String, Object> model) {<--does this always stay this way? 
    int orderID= OrderService.delete(orderId); 
    orderRepository.delete(orderID) 
    return "someform/orderMaster"; 
} 

我有一個訂單實體,以及一個擴展CRUD的OrderRepo。 服務業務邏輯位於Controller中(上圖),Controller有一個OrderService的@Autowire。

感謝(仍然習慣用SpringMVC/JPA數據基本問題,這樣的道歉)

回答

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 +服務類。

回購: //創建界面,將存儲您的所有操作

@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); 
    } 
} 
+0

我的回購延伸crudrepo <訂單,整數>和我一直沒教會使用會話。 – Hawwa

+0

沒有重要的會話,實現你的倉庫你喜歡什麼。我展示瞭如何正確地構造代碼,並且在不需要時不調用2種方法。 – GVArt

+0

實體管理器和會話有什麼區別? – Hawwa