ibatis框架调用sqlmap,执行多条sql
我们用ibatis框架,每次调用数据库都是通过dao层调用sqlmap配置文件,来获取结果。现在有个业务流程就是获取流水号,获取时候要从数据库读取流水号id,然后紧接着把...
我们用ibatis 框架,每次调用数据库都是通过dao层调用sqlmap配置文件,来获取结果。现在有个业务流程就是获取流水号,获取时候要从数据库读取流水号id,然后紧接着把这个值再加1,以保证每次拿到的都是不同的id号。两条sql分别为:
select seqno from table where .. for update ;
update table set seqno = seqno+1
问题就是,sqlmap配置文件中,每次仅能执行一条sql语句,上面2条sql无法一起执行。
要么就是从dao层分两次调用,但是上面两条sql一定要保证数据库的sessionid一致,我就怕出现第一次调用完查询,等第二次调用时候sesssion就变了,这样就会死锁谁都无法读取了。这种问题该怎么解决? 展开
select seqno from table where .. for update ;
update table set seqno = seqno+1
问题就是,sqlmap配置文件中,每次仅能执行一条sql语句,上面2条sql无法一起执行。
要么就是从dao层分两次调用,但是上面两条sql一定要保证数据库的sessionid一致,我就怕出现第一次调用完查询,等第二次调用时候sesssion就变了,这样就会死锁谁都无法读取了。这种问题该怎么解决? 展开
展开全部
没有的吧,我记得mybatis中是可以执行2条sql的,应该ibatis也可以才是。第一条sql中的返回值是可以作为第二条sql的条件执行的。
<updateid="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="seqno" >
select seqno from table where .. for update
</selectKey>
update table set seqno = seqno+1
</update>
<updateid="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="seqno" >
select seqno from table where .. for update
</selectKey>
update table set seqno = seqno+1
</update>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询