以下代码应使用orderID删除某些Order。我对方法的参数感到困惑,好像这个方法依赖于orderID,这怎么会起作用?
PriceBookEntry
我有一个订单实体,以及一个扩展CRUD的OrderRepo。 服务业务逻辑位于Controller(上方)中,Controller具有OrderService的@Autowire。
谢谢(仍然习惯于SpringMVC / JPA数据,因此对基本问题表示歉意)
答案 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);
}
}