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