文档章节

生成流水号,20160722000001

王静0716
 王静0716
发布于 2016/07/22 14:24
字数 190
阅读 27
收藏 0

mysql 写自定义方法实现oracle的sequence,并定义一张sequence表。见前一篇博客。

package com.edoc.service.impl;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.edoc.service.MysqlSequenceServiceI;

@Service("mysqlSequenceService")
@Transactional
public class MysqlSequenceServiceImpl implements MysqlSequenceServiceI {

	/**
	 * 初始化Log4j的一个实例
	 */
	private static final Logger logger = Logger
			.getLogger(MysqlSequenceServiceImpl.class);
	/**
	 * 注入一个sessionFactory属性,并注入到父类(HibernateDaoSupport)
	 * **/
	@Autowired
	@Qualifier("sessionFactory")
	private SessionFactory sessionFactory;

	public Session getSession() {
		// 事务必须是开启的(Required),否则获取不到
		return sessionFactory.getCurrentSession();
	}
	
	@Override
	public Integer nextval(String sequenceName) {
		String sql = "SELECT NEXTVAL('"+sequenceName+"')";
		Object o = getSession().createSQLQuery(sql).uniqueResult();
		return (Integer)o;
	}

	@Override
	public Integer currval(String sequenceName) {
		String sql = "SELECT CURRVAL('"+sequenceName+"')";
		Object o = getSession().createSQLQuery(sql).uniqueResult();
		return (Integer)o;
	}
	
	public Long SerialNumber() {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
		String today = df.format(new Date());
		String num = String.format("%06d", 1);  
		String number = today+num;
		Long serialNum = Long.valueOf(number);
		return serialNum;
	}

}

 

© 著作权归作者所有

王静0716

王静0716

粉丝 30
博文 63
码字总数 27883
作品 0
深圳
程序员
私信 提问
PHP生成订单号算法

首先,订单号不适合用自增字段,因为会暴露一个网站的业务量(参见“德国坦克问题” http://en.wikipedia.org/wiki/Germantank_problem)。另外,通常在订单在写入数据库之前,业务就需要用到...

jims
2016/08/28
0
0
OpenJweb快速开发平台字段默认值生成器

OpenJweb快速开发平台中可设置任意字段的默认值规则,同时也可以在规定的默认值生成器类中增加新的字段默认值生成规则,这样为任意表字段设置默认值就大大减少了开发工作量,目前字段默认值生成...

迷途d书童
2012/03/09
46
0
通用可配置业务流水号生成设计

有一段时间没有思考代码相关的工作了,最近项目经常碰到不同业务流水号的生成,下面的技术人员每次都针对流水号生成写一些复杂的代码;为了解放以后这方面的工作于是动了一下脑子想一个动态可...

泥水佬
2016/03/10
304
2
mysql并发插入重复数据问题的解决思路

一、问题描述 涉及到的功能是一个表单页面添加数据,后端接口的功能就是往数据库中写入表单的数据,系统属于后台系统,但因为跟钱有关,添加的数据要保证同一次填写的数据只能入一次库。 测试...

八月下沙
2016/12/21
720
0
用SQL存储过程生成唯一单据号

在一些系统中,经理要生成单据号,为了不使多台客户端生成的单据号重复,一般要在服务端生成这种流水号,本文是在数据库中生成流水号,并且可以生成多种类型的单据号(比如销售单据号,盘点单...

桂素伟
2017/05/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
3分钟前
1
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
4分钟前
1
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
5分钟前
1
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
8分钟前
1
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
9分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部