Mybaties插入生成UUID并返回主键

Mybaties插入生成UUID并返回主键

PGSQL
PGSQL

<insert id="insertData" parameterType="Object">
      <selectKey resultType="long" keyProperty="Object_id">
        select uuid_generate_v4();
      </selectKey>
      insert...语句
  </insert>

ORACLE在这里插入代码片

<insert id="AltName.insert" parameterType="AltName">  
     <selectKey keyProperty="id" resultType="String" order="BEFORE">  
            select sys_guid() from dual  
        </selectKey>  
     insert into ...
 </insert> 

MYSQL

<insert id="insert" parameterType="com.mawulou.model.Functions" >  
    
    <selectKey keyProperty="pkGlobalId" resultType="String" order="BEFORE">  
        select uuid() from dual  
    </selectKey>  
       
    insert into ...
  </insert> 
### 使用UUID作为主键返回 在编程实践中,使用UUID作为实体对象的主键可以有效提高系统的可靠性和扩展性。当创建一个新的记录时,可以通过生成唯一的UUID来确保该记录在全球范围内的唯一性。 对于Java环境下的JPA(Java Persistence API),定义带有UUID类型的主键字段非常简单。下面展示了一个具体的例子,在这个例子中`User`类被标注为实体,且其中包含了ID属性,此属性利用了`@Id`以及`@GeneratedValue(strategy = GenerationType.UUID)`这两个注解来进行配置[^1]: ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.UUID) private UUID id; // 其他字段和方法... } ``` 每当向数据库插入一条新纪录的时候,上述代码会自动为这条记录分配一个全新的UUID值给它的id成员变量。这不仅简化了开发过程还增强了应用程序的安全特性。 为了获取刚刚保存的对象所对应的UUID,可以在保存操作之后立即访问该对象实例上的`getId()`方法获得最新产生的UUID字符串表示形式。例如: ```java // 假设已经有一个EntityManager em 和 Transaction tx 被初始化好 try{ tx.begin(); User newUser = new User(); // 设置其他必要的属性... em.persist(newUser); tx.commit(); System.out.println("New user ID is " + newUser.getId()); }catch(Exception e){ if (tx.isActive()) tx.rollback(); }finally{ em.close(); } ``` 这段程序片段展示了如何在一个事务边界内完成持久化动作打印出刚创建用户的UUID标识符。值得注意的是,只有提交成功后才能保证得到有效的UUID;如果发生异常导致回滚,则不会有任何数据变更也不会有新的UUID产生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值