用户自定义ID Generator的例子

转载 2004年07月16日 10:10:00

PO

package com.dsii.hibernate.po; 
public class Company { 
   private String id; 
   private String name; 
   private String year; 
   public Company() { } 
   public String getId() { return id; } 
   public void setId(String id) { this.id = id; } 
   public String getName() { return name; } 
   public void setName(String name) { this.name = name; } 
   public String getYear() { return year; } 
   public void setYear(String year) { this.year = year; } 
} 

XML

<?xml version="1.0"?> uid_table next_hi_value_column C 

Customized Id Generator

package com.dsii.hibernate.po; 
import java.io.Serializable; 
import java.sql.SQLException; 
import java.util.Properties; 
import net.sf.hibernate.HibernateException; 
import net.sf.hibernate.dialect.Dialect; 
import net.sf.hibernate.engine.SessionImplementor; 
import net.sf.hibernate.type.Type; 
import net.sf.hibernate.util.PropertiesHelper; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import net.sf.hibernate.id.TableGenerator; 
public class CustomizedIdGenerator extends TableGenerator { 
   private String prefix; 
   private static final Log log = LogFactory.getLog(CustomizedIdGenerator.class); 
   public void configure(Type type, Properties params, Dialect d) { 
      super.configure(type, params, d); 
      prefix = params.getProperty("prefix") == null ? "Pre" : params.getProperty("prefix"); 
   } 
   public synchronized Serializable generate(SessionImplementor session, Object obj) throws SQLException, HibernateException { 
      Integer integer = (Integer)super.generate(session, obj); 
      return prefix+integer; } 
   } 

Bean

package com.dsii.hibernate.po; 
import net.sf.hibernate.*; 
import net.sf.hibernate.cfg.Configuration; 
import net.sf.hibernate.tool.hbm2ddl.SchemaExport; 
public class TestCompany { 
   private static SessionFactory _sessions = null; 
   static { 
      try { 
         Configuration cfg = new Configuration(); 
         cfg.addClass(Company.class); 
         SchemaExport dbExport = new SchemaExport(cfg); 
         dbExport.create(true, true); 
         _sessions = cfg.buildSessionFactory(); 
      } catch (MappingException e) { 
         e.printStackTrace(); 
      } catch (HibernateException e) { 
         e.printStackTrace(); 
      } 
   } 
public static void main(String[] args) throws HibernateException { 
   System.out.println("----------------begin"); 
   Company c1 = new Company(); 
   c1.setName("dsii"); 
   c1.setYear("2004");   
   Company c2 = new Company(); 
   c2.setName("dsii"); 
   c2.setYear("2004"); 
   Session session = _sessions.openSession(); 
   Transaction tx = null; 
   try { 
      tx = session.beginTransaction(); 
      session.save(c1); 
      session.save(c2); 
      tx.commit(); 
   } catch (HibernateException he) {
      if (tx != null) { tx.rollback(); } throw he; 
   } finally { session.close(); } 
   System.out.println("----------------end"); 
   } 
} 

mybatis-generator扩展教程系列 -- 自定义sql xml文件

今天抽空写一下生成器比较重要的环节,如何自定义mybatis生成器的sql xml文件,因为原生出来的格式不好看,命名也不符合我们日常使用习惯,很多冗余的sql节点,下面我直接直入主题演示代码了,还是...
  • shadowsick
  • shadowsick
  • 2016年12月15日 09:41
  • 3002

Mybatis学习笔记九:自定义Generator Plugin

上一章中知道了如何使用Mybatis Generator Plugin自动生成Mapper、Model和相关配置文件。但是在实际使用情况中,可能会遇到不同的个性化需求,那么就需要Generator的自...
  • zsy3313422
  • zsy3313422
  • 2016年11月16日 19:36
  • 7530

JPA注解之“@GeneratedValue”详解

一、JPA通用策略生成器  通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则是由@GeneratedValue设定的。...
  • chenlong220192
  • chenlong220192
  • 2015年06月29日 09:10
  • 4629

MongoDB自动增长id实现、自定义函数调用、与Spring集成

昨天同事问实现MongoDB主键自动增长有什么好的办法,虽然喜欢MongoDB客户端驱动程序自动生成的id,不过还是来测试了一下,仅仅是测试哦 废话少说 1、创建项目,添加依赖 ...
  • gp490609578
  • gp490609578
  • 2016年02月05日 16:46
  • 3036

generator.xml文件自动生成mybatis的xml配置

generator自动生成mybatis的xml配置、model、map等信息: 1、下载mybatis-generator-core-1.3.2.jar包。 网址:http://code.goo...
  • u010963948
  • u010963948
  • 2015年04月09日 16:47
  • 2816

mybatis-generator扩展教程系列 -- mapper xml文件增加自定义sql

今天我教大家如何在mapper.xml文件里增加我们自定义的sql节点,还是老规矩沿用之前的项目用例,如有看不懂的同学可以翻看下上几篇的教程1.打开IntrospectedTable.java找到en...
  • shadowsick
  • shadowsick
  • 2016年12月19日 09:52
  • 4795

mybatis-generator扩展教程系列 -- 自定义配置参数修改DAO,Mapper文件后缀

今天主题主要讲我们使用mybatis生成器遇到的最常见问题,如何修改生成的dao,mapper文件后缀,下面我们继续使用上一篇的用例继续改造,如果本篇示例看得不太理解的可以翻看下之前的演示,下面就开始...
  • shadowsick
  • shadowsick
  • 2016年12月01日 21:40
  • 2565

关于mybatis生成插件Generator配置文件中自定义注释

1.编写一个实现org.mybatis.generator.api.CommentGenerator接口的类。这个类有默认的实现,不会写可以参考默认实现 org.mybatis.generator.i...
  • Tian_Shi_Hei_De
  • Tian_Shi_Hei_De
  • 2017年06月26日 22:10
  • 644

hibernate 映射文件中id 及id Generator的详解

一、id 被映射的实体类必须声明一个对应数据库表主键列的属性。大多数类有一个JavaBeans风格的代表此实例唯一标识的属性。<id> 元素定义了该属性到数据库表主键字段的映射。 Ja...
  • arenn
  • arenn
  • 2017年03月16日 14:31
  • 818

MyBatisGenerator生成文件自定义名字-MBG扩展

可设置Mapper后缀为任意名如(DeptDao)一个例子 上面的配置会生成 bean.emp.Dept bean.emp.DeptQuery(用到MBG提供的插件,下面贴出) dao.emp.Dep...
  • bnhjk76
  • bnhjk76
  • 2017年02月14日 15:06
  • 3979
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用户自定义ID Generator的例子
举报原因:
原因补充:

(最多只允许输入30个字)