<insert id="addGoodsAndReturnId"  parameterType="com.project.entity.EmallGoodsWithBLOBs">   <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->

    insert into EMALL_GOODS ( GOODSNAME, CLASSID, 
      )
    values ( #{goodsname,jdbcType=VARCHAR})
      SELECT @@IDENTITY AS GOODSID  </insert> 这是执行的sql
2016-02-23 11:34:46 [http-8090-2] DEBUG com.project.dao.EmallGoodsMapper.addGoodsAndReturnId - ==>  Preparing: insert into EMALL_GOODS ( GOODSNAME) values ( ?) SELECT @@IDENTITY AS GOODSID 2016-02-23 11:34:46 [http-8090-2] DEBUG com.project.dao.EmallGoodsMapper.addGoodsAndReturnId - ==> Parameters: ereqrqer(String)
SELECT @@IDENTITY AS GOODSID  这一句明明在sql中执行了,为什么每次返回的都是1 插入的数据的行数。
上面的sql语句在 sqlserver 视图工具执行时是可以的。

解决方案 »

  1.   

    http://blog.csdn.net/jbgtwang/article/details/7307687
      

  2.   

    我都看过这样的   针对 sqlserver 的 是不行的啊 
      

  3.   

    我都看过这样的   针对 sqlserver 的 是不行的啊  报错吗?和你的jar版本有没有关系呢?
      

  4.   

    我记得要返回key要数据库支持
    然后是insert标签里面要加上key还是什么的有个关键字的..然后在你插入那个实体类里面的id属性才会有值
      

  5.   

    我都看过这样的   针对 sqlserver 的 是不行的啊  报错吗?和你的jar版本有没有关系呢?
    是报错的 报的不是内置函数
      

  6.   

    这是我的配置文件
    <!-- 添加厂区 -->
    <insert id="addPlant" parameterType="com.sundear.pojo.Plant"
    useGeneratedKeys="true" keyProperty="id">
    INSERT INTO t_plant
    (plant_code,plant_title,note,parent_id,createtime,updatetime)
    VALUES
    (#{facCode},#{name},#{note},#{parentId},#{creatDate},#{updateDate})
    </insert>
      

  7.   

    我觉得你少了一个配置属性useGeneratedKeys="true" keyProperty="id">
      

  8.   

    <insert id="myInsertStatement">
        INSERT INTO TestTable (name, owner)
        VALUES (#name#, #owner#)
        <selectKey keyProperty="id" resultClass="int">
             SELECT SCOPE_IDENTITY()
        </selectKey>
    </insert>http://stackoverflow.com/questions/3455796/generating-dao-with-ibatis-problem
      

  9.   

     我没环境测试。不同jar 版本 dtd 版本都可能发生问题。我觉得7楼的办法也是可以的。useGeneratedKeys="true" keyColumn="id" keyProperty="id"
    像这种,
      

  10.   

    useGeneratedKeys="true" keyProperty="id" keyColumn="id"
    keyProperty 是实体里面的属性,如果传入是map就是mao里的属性,keyColumn是表上的主键名称mybatis对于sqlserver不太友好,最终这样才能返回主键id另外不用加 selectKey标签
      

  11.   

    根据楼主的方式是可以用的
    如下我自己用idea在xml文件配置的
    <!-- 插入操作,返回值-->
    <insert id="insertBys" parameterType="com.cwj.User.User" useGeneratedKeys="true" keyProperty="uid">
          <!-- u_login(是我自己数据库表单的名称) insert的插入操作大家应该都 知道  -->
    INSERT INTO u_login (uname,pwd,sex,age,birth,adm)
    values(#{uname},#{pwd},#{sex},#{age},#{birth},#{adm})
       <!--  下面的这个才是配置的关键----- uid这个是你在数据库里面的创建表的名称里面的列名字id名称我的叫uid-->
    SELECT @@IDENTITY AS uid
    </insert>
      

  12.   


    楼主知道怎么使用主键返回SQLServer自增UUID返回值自增主键嘛~!
    求楼主帮忙