⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resequencegenerator.java

📁 博克后台的开发,有很多使用的方法和例子可以提供给大家学习
💻 JAVA
字号:
package com.common.util.cis;

import java.io.Serializable;
import java.util.Properties;

import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.Configurable;
import org.hibernate.id.PersistentIdentifierGenerator;
import org.hibernate.type.Type;
import org.hibernate.util.PropertiesHelper;

/**
 * Sequence 主键生成类 取得id转化为32进制形式,然后前补“0”,生成idstringlen位字串
 * @date 2006-2-24
 * @author 刘学军
 * 
 * 表主键生成说明
 * 本例中生成的是oracle中的sequence值的32进制形式,最后返回前面补“0”的8位字串
 * 只需在xxx.hbm.xml中配置id项即可,在DAO中不需要对主键项进行付值
<id name="yjxxrecid" type="java.lang.String">                      说明:po中的主键属性
        <column name="YJXXRECID" length="8" />                     说明:po对应数据表字段
        <generator class="com.common.util.cis.ReSequenceGenerator">说明:生成主键类,类似于 increment assigned等,使用前先将此类与cvs同步
		<param name="sequence">seq_seqid</param>                   说明:sequence的名称,即oracle中的sequence名称
		<param name="idstringlen">8</param>                        说明:返回主键字串的长度
		</generator>
 </id>
 * 
 */
public class ReSequenceGenerator extends org.hibernate.id.SequenceGenerator implements PersistentIdentifierGenerator, Configurable  {

	/**
	 * The parameters parameter, appended to the create sequence DDL.
	 * For example (Oracle): <tt>INCREMENT BY 1 START WITH 1 MAXVALUE 100 NOCACHE</tt>.
	 */
	
	public static final String IDSTRINGLEN = "idstringlen";
	
	private int idStrLen;

	public void configure(Type type, Properties params, Dialect dialect) throws

	MappingException {
		super.configure(type,params,dialect);
		idStrLen = Integer.parseInt(PropertiesHelper.getString(IDSTRINGLEN, params,"8"));

     }

	/* (非 Javadoc)
	 * @see org.hibernate.id.IdentifierGenerator#generate

	 (org.hibernate.engine.SessionImplementor, java.lang.Object)
	 */
	public Serializable generate(SessionImplementor session, Object obj)
			throws HibernateException {

		try {
			Serializable result=super.generate(session,obj);
					System.out.println("Sequence identifier:"+result);
					//return result;
					/*
					 * 取得id转化为32进制形式,然后前补“0”,生成8位字串
					 */
					return Sqid.getSqidTewString(Long.parseLong(result.toString()),idStrLen);
		}catch(HibernateException e){
			throw e;
		}

	}

	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -