mysql怎么实现序列java_java应用使用mysql数据库需要序列的简单实
1、在mysql新建一个表MySQL 序列使用,用来存放序列当前值的:
CREATE TABLE `sequenceid_table` (
`sequenceid_table_id` int(11) NOT NULL AUTO_INCREMENT,
`sequenceid
mysql方面准备: 1、在mysql新建一个表MySQL 序列使用,用来存放序列当前值的: CREATE TABLE `sequenceid_table` ( `sequenceid_table_id` int(11) NOT NULL AUTO_INCREMENT, `sequenceid_table_name` varchar(50) DEFAULT NULL COMMENT '项目名', `sequenceid_table_value` bigint(20) DEFAULT NULL COMMENT '值', PRIMARY KEY (`sequenceid_table_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; 2、插入一条默认数据: INSERT INTO `sequenceid_table` VALUES ( 'studentId', '100000001'); java方面: 创建序列工具类: /** * 获取序列工具 * */ public class SequenceIDUtil { private static SequenceIDUtil sequenceIDUtil=null; public SequenceIDUtil(){ } public synchronized static SequenceIDUtil getInstance() { if(sequenceIDUtil==null){ sequenceIDUtil=new SequenceIDUtil(); } return sequenceIDUtil; } /** * 学号 * @return */ public long studentId(){ synchronized (this) { long studentId=0; try{ BaseDao dao=new BaseDao(); String sql="select t.sequenceid_table_value from sequenceid_table t where t.sequenceid_table_name='studentId'"; studentId=dao.getValueBySql(sql); String updateSql="UPDATE sequenceid_table t set t.sequenceid_table_value="+(studentId+1)+" where t.sequenceid_table_name='studentId'"; dao.excueSql(updateSql); }catch(Exception e){ e.printStackTrace(); return 0; } return studentId; } } } 使用方法: public static void main(String[] arg){ System.out.println(SequenceIDUtil.getInstance().studentId()+""); } 这是比较简单的实现方法,解决了java用mysql时序列的问题。使用的时候只有一个实例,保证了序列的唯一性。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |