繁体   English   中英

如何返回ID插入存储过程+ Mybatis

[英]How to return Id insert stored procedure + mybatis

我有一个返回ID(SQL Server 2005)的存储过程:

BEGIN
    INSERT INTO 
      rolTemplateWeek(rolWeek,employee,date_insert) 
      VALUES(@numberRol,@employeeId,getDate())
   Select @id = @@IDENTITY
END

Mapper.xml

    <insert  id="saveRol" parameterType="com.service.specual.dto.RolWeek" statementType="CALLABLE">
    { call saveRolWeek(
        #{numberRol,javaType=Integer,jdbcType=INTEGER,mode=IN},
        #{employeeId,javaType=Integer,jdbcType=INTEGER,mode=IN},
        #{id,javaType=Integer,jdbcType=INTEGER,mode=OUT}
    )}
</insert>

RolWeek.class

    public class RolWeek {

    private int id;
        private int numberRol;
    private int employeeId;
        .... get & setters

Mapper.java

   RolWeek rolWeek= new RolWeek ();
   rolWeek.setNumberRol(120);
   rolWeek.setEmployeeId(100);

   public int saveServiceRolWeek(RolWeek rolWeek);

插入正确但不返回我的ID,只能返回“ 1”?我如何才能返回插入的ID?

--
-- Use output clause, make sure id is OUTPUT
--

CREATE PROCEDURE saveRolWeek
   @numberRol INT,
   @employeeId INT,
   @id INT OUTPUT
AS
BEGIN

    SELECT @id =
      INSERT INTO rolTemplateWeek(rolWeek, employee, date_insert) 
      OUTPUT INSERTED.ID
      VALUES(@numberRol, @employeeId, getDate());
END

-- Sample call with 1, 1 as parameters
DECLARE @retid int = null;
EXECUTE dbo.saveRolWeek 1, 1, @retid = @id OUTPUT;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM