0
点赞
收藏
分享

微信扫一扫

oracle中sequence的mybatis selectKey用法 30 我在<insert>标签下加了


首先User类里需要2个字段id和myid
id对应自增的序列号,myid对应手动写入的主键
替换下上面的selectKey部分

<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="id">
SELECT SEQ_USER_ID.nextval as id from dual
</selectKey>

注意添加了一个 order=“BEFORE”
意思是在执行insert 语句前查询序列号并保存到User的id字段中
此时User的id字段就有值了,再执行插入语句。
执行成功后要取出自增的id号直接user.getId();

在新增数据的地方添加ID地方添加一个判断
如果传入ID为空 则添加执行ORALCE的自增长ID设置。否则就设置手动设置ID为 ID值

<insert id="insertUser" parameterClass="ibatis.User"> 
<if test="myid = null">
<selectKey resultClass="long" keyProperty="id">
select SEQ_USER_ID.nextval as id from dual
</selectKey>
</if>

insert into user
(
id,
name,
password)
values
(
<choose>
<when test="myid =null ">
#id#,
</when >
<when test="myid != null">
#myid#,
</when >
#name#,
#password#
)
</insert>

大概是这个意思 你从外部传入时如果需要手动增加则添加一个myid字段。。

sql里面判断 如果id为空则还是使用自动增加id 否则就使用你传入的ID,sql语法上可能有点不正确 手写的


举报

相关推荐

0 条评论