在MyBatis 中Oracle 自增配置

我们在MyBatis 中可以使用Oracle的自增长,可以使用配置文件和Java代码来获取当前自增的最大值。

首先,需要自己在Oracle创建一个自增,命令如下。

 CREATE SEQUENCE  "COMMONTRADE"."UCF_RECHARGE_SUBORDER_SEQ"  MINVALUE 10000000000 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 10000007200 CACHE 200 NOORDER  NOCYCLE ;


第二步:使用Spring 对Oracle 序列的支持配置。需要配置到applicationContext.xml 中。

	<bean id="oracleSequenceMaxValueIncrementer"
		class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">
		<property name="incrementerName" value=""></property>
		<property name="dataSource" ref="dataSource"></property>
	</bean>

第三步:编写获取序列的工具类。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer;
import org.springframework.stereotype.Service;

import com.ucf.trade.util.enums.TradeEnum;

@Service
public class SequenceGenerator {
	private static final String UCF_RECHARGE_TRADE_ORDER_SEQ = "UCF_RECHARGE_TRADE_ORDER_SEQ";
 
	
	@Autowired
	public OracleSequenceMaxValueIncrementer oracleSequenceMaxValueIncrementer;
 
	public String nextRechargeOrderSeq(String bizProduct , String txnType){
		oracleSequenceMaxValueIncrementer.setIncrementerName(UCF_RECHARGE_TRADE_ORDER_SEQ);
		String currval = oracleSequenceMaxValueIncrementer.nextStringValue();
		return TimeUtil.getCurrentDateTime14() +bizProduct+ txnType  + currval;
		//20140328175835 100 10 10000002814  共30 位
	 
	}

第四步:使用

    把这个工具类作为一种服务注入

	@Autowired
	public SequenceGenerator sequenceGenerator;

   在需要的方法中添加

  String id =sequenceGenerator.nextRechargeOrderSeq();

按以上的步骤 就可以使用Oracle 中的序列,我们可以通过这个序列来拼接一些有意义的数字。


你可能感兴趣的:(在MyBatis 中Oracle 自增配置)