1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /***
18 * User: Clinton Begin
19 * Date: Jul 13, 2003
20 * Time: 7:21:30 PM
21 */
22 package com.ibatis.jpetstore.persistence.sqlmapdao;
23
24 import com.ibatis.dao.client.DaoException;
25 import com.ibatis.dao.client.DaoManager;
26 import com.ibatis.jpetstore.domain.Sequence;
27 import com.ibatis.jpetstore.persistence.iface.SequenceDao;
28
29 public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {
30
31 public SequenceSqlMapDao(DaoManager daoManager) {
32 super(daoManager);
33 }
34
35 /***
36 * This is a generic sequence ID generator that is based on a database
37 * table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
38 * <p/>
39 * This approach should work with any database.
40 *
41 * @param name The name of the sequence.
42 * @return The Next ID
43 * @
44 */
45 public synchronized int getNextId(String name) {
46 Sequence sequence = new Sequence(name, -1);
47
48 sequence = (Sequence) queryForObject("getSequence", sequence);
49 if (sequence == null) {
50 throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
51 }
52 Object parameterObject = new Sequence(name, sequence.getNextId() + 1);
53 update("updateSequence", parameterObject);
54
55 return sequence.getNextId();
56 }
57
58 }