package com.baiyue.finance.mapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; /** 本服务业务编号序列,更新与读取必须处于同一事务连接。 */ @Mapper public interface DocumentSequenceMapper { /** 唯一序列键原子递增,并在连接内保存本次分配值。 */ @Insert("INSERT INTO fin_document_sequence(sequence_key,current_value) VALUES(#{key},LAST_INSERT_ID(1)) " + "ON DUPLICATE KEY UPDATE current_value=LAST_INSERT_ID(current_value+1)") int allocate(@Param("key") String key); /** 禁用一级和二级缓存,返回本事务刚刚分配的值。 */ @Select("SELECT LAST_INSERT_ID()") @Options(useCache=false, flushCache=Options.FlushCachePolicy.TRUE) Long allocatedValue(); }