• 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

  • 相关阅读:
    JSP/Servlet相关
    mysql 相关问题解决
    Git常用
    利用JDBC连接MySQL并使用MySQL
    memcache、redis原理对比
    Python 2.7.x 和 3.x 版本的重要区别
    python 单例模式
    python 装饰器原理及用法
    python 冒泡排序
    python 迭代器和生成器
  • 原文地址:https://www.cnblogs.com/hi-gdl/p/9645129.html
Copyright © 2020-2023  润新知