【Mybatis】uuid的使用

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就可以获取当前主键了


Sql代码  收藏代码
  1. -- Create table  
  2. create table TECHNOLOGYCOMPANY  
  3. (  
  4.   ID              VARCHAR2(32) default SYS_GUID() not null,  
  5.   FLOWID          VARCHAR2(50),  
  6.   CONPANYID       NUMBER,  
  7.   ISCOMMUNICATION VARCHAR2(10)  
  8. )  

在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

 

posted @ 2017-08-15 10:18  Legolas_4  阅读(1119)  评论(0编辑  收藏  举报