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

 

posted on 2018-09-14 10:41  hi-gdl  阅读(268)  评论(0编辑  收藏  举报

导航