2013-12-02 3 views
0

Я хочу обновить базу данных mysql весной mybatis. У меня есть пара интерфейсов mapper и вы хотите выполнить обновление, используя sqlsession.commit(). Как я могу определить каждый из sqlsession?Как использовать sqlsession для обновления mysql

@Transactional 
public BookingRecord book(Person person, Hotel hotel, String id) { 
    List<Room> rooms = hotel.getRooms(); 
    for (Room room : rooms) { 
     if (room.isAvailable()) { 
      if (person.getBalance() > room.getPrice()) { 

       // 开始订房 
       room.setAvailable(false); // 保留房间 
       person.setId(id); 
       person.setBalance(person.getBalance() - room.getPrice()); //转账 
       hotel.setBalance(hotel.getBalance() + room.getPrice()); //转账2 
       BookingRecord r = new BookingRecord(); //生成订单 
       r.setHotelName(hotel.getName()); //记录酒店名 
       r.setRoomNumber(room.getRoomNumber()); //记录房间号 
       r.setPersonId(person.getId()); //记录客人id 
       r.setStartDate(new Date()); 
       personMapper.update(person); 
       brMapper.create(r); 
       hotelMapper.updateBalance(hotel); 
       roomMapper.update(room); 
       return r; 
      } 
     } 
    } 
    log.info(person.getName() + "successfully booked at " + hotel.getName()); 
    return null; 
    } 

ответ

0

@Transactional сделать этот класс транзакционными средствами весна будет управлять процедурой начала, совершения и отката во время выполнения. Сами транзакции - очень широкая область исследований, поэтому я предлагаю вам прочитать Spring Transaction, чтобы узнать больше о том, как Spring управляет транзакцией. Что касается вашего вопроса, я предлагаю вам подключить JDBC-соединение к этому компоненту, чтобы выполнить начало (фиксацию или откат) пророчески.

Смежные вопросы