oracle中sequence的mybatis selectKey用法 30
我在<insert>标签下加了<selectKeykeyProperty="ldrkbh1"order="BEFORE"resultType="java.lang.Str...
我在<insert>标签下加了
<selectKey keyProperty="ldrkbh1" order="BEFORE" resultType="java.lang.String">
select S_USER.nextval from dual
</selectKey>
现在需要有时能手动写入主键,如果有手动写入则用手动的,自动写入用自增长的,这个该怎么写?
S_USER.Currtval能这么直接调用吗? 展开
<selectKey keyProperty="ldrkbh1" order="BEFORE" resultType="java.lang.String">
select S_USER.nextval from dual
</selectKey>
现在需要有时能手动写入主键,如果有手动写入则用手动的,自动写入用自增长的,这个该怎么写?
S_USER.Currtval能这么直接调用吗? 展开
展开全部
你们点踩的,上面的回答已经很好了。
首先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值
如果传入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语法上可能有点不正确 手写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询