package org.springframework.samples.jpetstore.dao.ibatis; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataRetrievalFailureException; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class SqlMapSequenceDao extends SqlMapClientDaoSupport { /** * This is a generic sequence ID generator that is based on a database * table called 'SEQUENCE', which contains two columns (NAME, NEXTID). * This approach should work with any database. * @param name the name of the sequence * @return the next ID */ public int getNextId(String name) throws DataAccessException { Sequence sequence = new Sequence(name, -1); sequence = (Sequence) getSqlMapClientTemplate().queryForObject("getSequence", sequence); if (sequence == null) { throw new DataRetrievalFailureException( "Could not get next value of sequence '" + name + "': sequence does not exist"); } Object parameterObject = new Sequence(name, sequence.getNextId() + 1); getSqlMapClientTemplate().update("updateSequence", parameterObject, 1); return sequence.getNextId(); } }