www.pudn.com > iBATIS_JPetStore-4.0.5.zip > SequenceSqlMapDao.java, change:2004-06-17,size:1309b


/** 
 * User: Clinton Begin 
 * Date: Jul 13, 2003 
 * Time: 7:21:30 PM 
 */ 
package com.ibatis.jpetstore.persistence.sqlmapdao; 
 
import com.ibatis.dao.client.DaoException; 
import com.ibatis.dao.client.DaoManager; 
import com.ibatis.jpetstore.domain.Sequence; 
import com.ibatis.jpetstore.persistence.iface.SequenceDao; 
 
public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao { 
 
  public SequenceSqlMapDao(DaoManager daoManager) { 
    super(daoManager); 
  } 
 
  /** 
   * This is a generic sequence ID generator that is based on a database 
   * table called 'SEQUENCE', which contains two columns (NAME, NEXTID). 
   * <p/> 
   * This approach should work with any database. 
   * 
   * @param name The name of the sequence. 
   * @return The Next ID 
   * @ 
   */ 
  public synchronized int getNextId(String name) { 
    Sequence sequence = new Sequence(name, -1); 
 
    sequence = (Sequence) queryForObject("getSequence", sequence); 
    if (sequence == null) { 
      throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence)."); 
    } 
    Object parameterObject = new Sequence(name, sequence.getNextId() + 1); 
    update("updateSequence", parameterObject); 
 
    return sequence.getNextId(); 
  } 
 
}