如何使用sqlsession更新mysql

时间:2013-12-02 22:55:10

标签: java mysql spring mybatis

我想在spring mybatis中更新mysql数据库。我有几个mapper接口,并希望使用sqlsession.commit()执行更新。我如何定义每个sqlsession?

@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;
    }

1 个答案:

答案 0 :(得分:0)

@Transactional使这个类事务意味着spring将在执行期间管理begin,commit和rollback程序。事务本身是一个非常广泛的研究领域,因此我建议您阅读Spring Transaction以了解有关Spring如何管理事务的更多信息。关于你的问题,我建议你应该为这个bean注入JDBC连接,以便预先执行begin,(commit或rollback)。