表生成器 @TableGenerator

  

用途:

        将当前主键的值单独保存到一个数据库的表中,主键的值每次都是从指定的表中查询来获得,这种生成主键的方式
也是很常用的。这种方法生成主键的策略可以适用于任何的数据库,不必担心不同数据库不兼容造成的问题。

@TableGenerator注解属性解释:

         name属性表示该表主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中。

         table属性表示表生成策略所持久化的表名。

         catalog属性和schema具体指定表所在的目录名或是数据库名。

         pkColumnName属性的值表示在持久化表中,该主键生成策略所对应键值的名称。

         valueColumnName属性的值表示在持久化表中,该主键当前所生成的值,它的值将会随着每次创建累加。

         pkColumnValue属性的值表示在持久化表中,该生成策略所对应的主键。

         initialValue表示主键初识值,默认为0。

         allocationSize表示每次主键值增加的大小,默认为50。

 

实现步骤:

 

一、创建自动生成主键表

Sql代码
  CREATE TABLE `user_generation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pk_user_id_name` varchar(50) DEFAULT NULL,
  `pk_user_id_value` int(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
  )

   二、所需jar包

  • ant-1.7.1.jar   
  • antlr-2.7.6.jar   
  • commons-collections-3.2.1.jar   
  • dom4j-1.6.1.jar   
  • hibernate-annotations-3.4.0.GA.jar   
  • hibernate-commons-annotations-3.3.0.ga.jar   
  • hibernate-core-3.3.2.GA.jar   
  • hibernate-ehcache-3.3.2.GA.jar   
  • hibernate-jpa-2.0-api-1.0.0.Final.jar   
  • hibernate3.jar   
  • javassist-3.9.0.GA.jar   
  • jta-1.1.jar   
  • junit-4.5.jar   
  • junit.jar   
  • mysql-connector-java-5.0.8-bin.jar   
  • slf4j-api-1.6.1.jar   
  • slf4j-nop-1.6.1.jar 

     

    三、创建实体类

    1. package com.fk.entity;   
    2.   
    3. import java.io.Serializable;   
    4.   
    5. import javax.persistence.Column;   
    6. import javax.persistence.Entity;   
    7. import javax.persistence.GeneratedValue;   
    8. import javax.persistence.GenerationType;   
    9. import javax.persistence.Id;   
    10. import javax.persistence.Table;   
    11. import javax.persistence.TableGenerator;   
    12.   
    13.   
    14. /**  
    15.  * @Description    用户实体  
    16.  * @author mqyl1  
    17.  */  
    18. @Entity //表明该类是一个实体,与数据库对应  
    19. @Table(name="T_USER")   //对应数据库中的表名  
    20. public class User implements Serializable {   
    21.   
    22.     //用户ID   
    23.     private int sid;   
    24.        
    25.     //用户名   
    26.     private String userName;   
    27.        
    28.     //用户密码   
    29.     private String password;   
    30.   
    31.     @Id //对应数据库中的主键  
    32.     @GeneratedValue(strategy=GenerationType.TABLE,//指定主键生成策略  
    33.                     generator="PK_user")    //对应生成策略名称  
    34.     @TableGenerator(name="PK_user"//生成策略名称  
    35.                     pkColumnName="pk_user_id_name",     //主键的列名  
    36.                     pkColumnValue="USER_PK",            //主键的值  
    37.                     valueColumnName="pk_user_id_value"//生成的值  列名  
    38.                     table="USER_GENERATION",            //生成的表名  
    39.                     //initialValue=0   [主键初识值,默认为0。]  
    40.                     //catalog schema   指定表所在的目录名或是数据库名。  
    41.                     allocationSize=1)  //主键每次增加的大小,默认为50  
    42.     @Column(name="pk_sid")  //对应pk_sid字段  
    43.     public int getSid() {   
    44.         return sid;   
    45.     }   
    46.   
    47.     @Column(name="f_userName")  //映射字段  
    48.     public String getUserName() {   
    49.         return userName;   
    50.     }   
    51.   
    52.     @Column(name="f_password")  //映射字段  
    53.     public String getPassword() {   
    54.         return password;   
    55.     }   
    56.   
    57.     public void setPassword(String password) {   
    58.         this.password = password;   
    59.     }   
    60.        
    61.     public void setSid(int sid) {   
    62.         this.sid = sid;   
    63.     }   
    64.        
    65.     public void setUserName(String userName) {   
    66.         this.userName = userName;   
    67.     }   
    68.        
    69.     public User() {   
    70.         super();   
    71.     }   
    72.   
    73.     public User(String userName, String password) {   
    74.         super();   
    75.         this.userName = userName;   
    76.         this.password = password;   
    77.     }   
    78. }  

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值