package com.highcom.seqgen.dao.jdbc;
import java.sql.*;import javax.sql.*;
import org.apache.commons.logging.*;import org.springframework.beans.factory.*;import org.springframework.context.*;import org.springframework.jdbc.core.*;import org.springframework.jdbc.object.*;import com.highcom.seqgen.dao.*;import com.highcom.seqgen.domain.*;
public class sequencedaojdbcimpl implements sequencedao, initializingbean {
private datasource datasource; private static log logger = logfactory.getlog(sequencedaojdbcimpl.class);
// sequencequery sequencequery; sequenceupdate sequenceupdate; sequenceinsert sequenceinsert; // protected static final string insert_sql = "insert into sequence(seq_name,seq_value) values( ? , ? )"; protected static final string update_sql = "update sequence set seq_value = ? where seq_name = ?"; protected static final string select_sql = "select seq_name,seq_value from sequence where seq_name =?";
public sequencedaojdbcimpl() {
}
public int getsequence(string seq_name) { int result; object obj = sequencequery.findobject(new object[] {seq_name}); if (obj == null) { sequenceinsert.insert(seq_name, 0); }
sequence seq = (sequence) sequencequery.findobject(new object[] {seq_name}); sequenceupdate.update(seq.getname(), seq.getvalue() + 1); result = seq.getvalue() + 1; return result; }
public void afterpropertiesset() throws exception { if (datasource == null) { logger.error("must set datasource bean property on " + getclass()); throw new applicationcontextexception( "must set datasource bean property on " + getclass()); } // sequencequery = new sequencequery(this.datasource); sequenceupdate = new sequenceupdate(this.datasource); sequenceinsert = new sequenceinsert(this.datasource); }
public void setdatasource(datasource datasource) { this.datasource = datasource; }
///////////////////////jdbc内部类 class sequenceinsert extends sqlupdate { public sequenceinsert(datasource datasource) { super(datasource, insert_sql); declareparameter(new sqlparameter(types.varchar)); declareparameter(new sqlparameter(types.integer)); compile(); }
public void insert(string seqname, int segvalue) { object[] objs = new object[] { seqname, new integer(segvalue)}; super.update(objs); } }
class sequenceupdate extends sqlupdate { public sequenceupdate(datasource datasource) { super(datasource, update_sql); declareparameter(new sqlparameter(types.integer)); declareparameter(new sqlparameter(types.varchar));
compile();
}
public void update(string seqname, int segvalue) { object[] objs = new object[] { new integer(segvalue), seqname}; super.update(objs); } }
class sequencequery extends mappingsqlquery { public sequencequery(datasource datasource) { super(datasource, select_sql); declareparameter(new sqlparameter(types.varchar)); compile(); }
protected object maprow(resultset resultset, int _int) throws sqlexception { sequence seq = new sequence(); seq.setname(resultset.getstring("seq_name")); seq.setvalue(resultset.getint("seq_value")); return seq; } }
}
