UUID不是128位长的吗,怎么生成的都是36个字符的字符串?
UUID.fromString("84D1319C-FBAF-644C-901A-8F091F25AF04"));
UUID中有固定的四个 ”-“,所以32位长。
128位是 二进制, 每四个二进制转一个16进制数。 128/4=32
所以,就是32个16进制数的字符了。
mybatis生成UUID主键,且获取当前新增的UUID主键
在平时业务需求中,有可能会需要当前新增对象的主键ID。
在此我对用UUID作为主键ID做了实验。
1 <selectKey keyProperty="user.userId" resultType="java.lang.String" order="BEFORE"> 2 select uuid() 3 </selectKey>
keyProperty:selectKey子元素返回值将赋值到领域模型的哪个属性中。
resultType:返回结果类型
order:BEFORE 标识在执行插入语句之前执行
在设置keyProperty="user.userId"时这段代码会在执行insert语句之前产生一条uuid并赋值到当前user对象中的userId中。
所以在新增成功后直接getUserId就可以获取当前主键了
- -- Create table
- create table TECHNOLOGYCOMPANY
- (
- ID VARCHAR2(32) default SYS_GUID() not null,
- FLOWID VARCHAR2(50),
- CONPANYID NUMBER,
- ISCOMMUNICATION VARCHAR2(10)
- )
在oracle数据库中如何生成UUID字段,生成随机数
在sql语句中使用系统函数sys_guid()即可,比如:向temperature表中插入一条数据,主键是用uuid生成的。
insert into temperature (pkid,temperature,date,time) values(sys_guid(),'33','2013-05-20','10:33:04')
一般使用触发器时会设计到,向该表中插入数据。
在oracle数据库中,随机生成40-50的整数语句如下:
select dbms_random.value(40,90) from dual