![](https://csdnimg.cn/release/download_crawler_static/1852800/bg4.jpg)
<generator class="identify"></generator>
</id>
create table XXXX(
oid int primary key auto_increment,
.........
);
B 。 sequence : 也是需要数据的支持 , 要求底层的数据库提供序列来生成主键;
<id name="oid">
<generator class="sequence">
<param name="sequence">t_seq</param>s
</generator>
</id>
param 标签告诉 hibernate 产生序列的名字, 我们要自己去创建资格序列; 同过 create seque nce
当然如果不写,那么他会使用默认的名字的 sequence 叫做 hibernate_sequence 但是我们尽量
自己去创建自己的名字,不要用默认的名字;
C 。 hilo 高低位算法:
<id name="oid">
<generator class="hilo">
<param name="table">t_hilo</param>
<param name="column">hi</param>
</generator>
</id>
D 。 seqhilo
<id name="oid">
<generator class="seqhilo">
<param name="sequence">t_seq</param>
</generator>
</id>
这个也是高低为算法,不过他的高位是由 seqence 来提供,到底是那个 seqence 来提供呢?
那么就是后面的 <param name="sequence">t_seq</param> 来定义;
E 。 native( 我们常用 )
<id name="oid">
<generator class="native">
</id>
他会根据底层数据不同,而去选择主键的生成方式,比如如果用的 Mysql 数据库那
么就用 identify ; Oracle 就用 sequence ;
F 。 uuid.hexs 方式生成主键;是通过 IP 或者系统时间算出来的,是一个 128 位的二进制数
;
转换成 32 位的 16 进制的数据;最后转换成一个 32 位的字符串
<id name="oid">