sql实现简单自增长,JPA的主键产生策略

然后,在insert数据的时候,直接调用获取商品编号的方法即可:

  @GeneratedValue(generator
= “system-uuid”) 用generator属性指定要使用的策略生成器。

主键是SPBH,希望从000 增长到
999,不用序列的话可以这样做:新建一个程序包,用来处理商品信息的业务:

图片 1

假设现在有一张商品表sp001:


insert into jack.sp001 values(jack.pkg_spgl.getSpBh,'可乐',2.5,30,null,'110000') ;insert into jack.sp001 values(jack.pkg_spgl.getSpBh,'牛奶',3.5,50,null,'110000') ;insert into jack.sp001 values(jack.pkg_spgl.getSpBh,'饼干',5,30,null,'110000') ;insert into jack.sp001 values(jack.pkg_spgl.getSpBh,'蛋糕',100,10,null,'110000') ;

  1、AUTO 自动选择一个最适合底层数据库的主键生成策略。如MySQL会自动对应auto
increment。这个是默认选项,即如果只写@GeneratedValue,等价于@GeneratedValue(strategy=GenerationType.AUTO)。

图片 2

  主键产生策略通过GenerationType来指定。GenerationType是一个枚举,它定义了主键产生策略的类型。

create or replace package pkg_spgl is --获得商品编号 function getSpBh(increment integer) return varchar2; end pkg_spgl;create or replace package body pkg_spgl is function getSpBh(increment integer) return varchar2 is spbh sp001.spbh%type; begin select to_char(nvl(max,0)+increment,'FM000') into spbh from jack.sp001 a ; return spbh; end;end pkg_spgl;

  @GeneratedValue:主键的产生策略,通过strategy属性指定。

如图,这样也可以简单实现。

  @GenericGenerator(name
= “system-uuid”, strategy =
“uuid”) 声明一个策略通用生成器,name为”system-uuid”,策略strategy为”uuid”。

其实,用简单的sql查询语句也可以实现。

  如果使用Hibernate对JPA的实现,可以使用Hibernate对主键生成策略的扩展,通过Hibernate的@GenericGenerator实现。

发表评论

电子邮件地址不会被公开。 必填项已用*标注