zoukankan      html  css  js  c++  java
  • DB2 MyBatis 序列 返回ID类型问题

    AMS_ROLE_SEQ 是一个序列 , 获取序列下个值的方法我知道的有如下两种

    -- 第一种
    select next value for AMS_ROLE_SEQ AS ID from SYSIBM.SYSDUMMY1 ;
    
    -- 第二种
    VALUES NEXTVAL FOR AMS_ROLE_SEQ

    如果要转换为字符串型可如下方式转换 :

    -- 第一种
    select CHAR(next value for AMS_ROLE_SEQ) AS ID from SYSIBM.SYSDUMMY1 ;
    
    -- 第二种
    VALUES(CHAR(NEXTVAL FOR AMS_ROLE_SEQ))

    拓展 :

    在MyBatis 中 需要获取返回的主键ID

        <!-- 新增角色信息 insertRole -->
        <insert id="insertRole" parameterType="com.xxxxxxx.xxx.bean.system.RoleBean">
            <selectKey resultType="string" keyProperty="roleId" order="BEFORE">
                  <!-- SELECT CHAR(NEXT VALUE FOR AMS_ROLE_SEQ) AS roleId FROM SYSIBM.SYSDUMMY1 -->
                  <!-- VALUES NEXTVAL FOR AMS_ROLE_SEQ -->
                  VALUES(CHAR(NEXTVAL FOR AMS_ROLE_SEQ))
               </selectKey>
            INSERT INTO AMS_ROLE
            (ROLE_ID,ROLE_NAME,APPROVAL_LEVEL,REMARK,ROLE_STATUS)
            VALUES(#{roleId},#{roleName},#{approvalLevel},#{remark},#{roleStatus})
        </insert>
    roleId 是 RoleBean 的String类型属性 ,
    ROLE_ID是表 AMS_ROLE varchar型列

    因此 resultType 只能返回 String 类型序列值塞到 RoleBean 对象中去才能够实现角色的插入

    java部分 :
    //在此之前 roleInfo.roleId 为空 
    this.roleDao.insertRole(roleInfo) ;//这个地方还是返回int
    String role_id = roleInfo.getRoleId();

    获取序列生成的 ID

  • 相关阅读:
    计算三角形的周长和面积的类
    类的定义和继承
    简单类的定义和继承
    template <typename T>模板类定义
    字符串中取出数字字符串
    C++类定义 常量定义
    cogs1752[boi2007]mokia 摩基亚 (cdq分治)
    bzoj3262陌上花开 cdq分治入门题
    初入lambda表达式 (主要是c++11)
    空之境界
  • 原文地址:https://www.cnblogs.com/hi-gdl/p/9645129.html
Copyright © 2011-2022 走看看