mybatis + sqlserver 在插入数据的同时返回自增的主键id

mengjg321 2016-02-23 11:30:33
  <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 视图工具执行时是可以的。




...全文
2045 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
火般炽热 2019-08-08
  • 打赏
  • 举报
回复
liminxincs 2019-04-26
  • 打赏
  • 举报
回复
楼主知道怎么使用主键返回SQLServer自增UUID返回值自增主键嘛~! 求楼主帮忙
liminxincs 2019-04-26
  • 打赏
  • 举报
回复
根据楼主的方式是可以用的 如下我自己用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>
  • 打赏
  • 举报
回复
useGeneratedKeys="true" keyProperty="id" keyColumn="id" keyProperty 是实体里面的属性,如果传入是map就是mao里的属性,keyColumn是表上的主键名称 mybatis对于sqlserver不太友好,最终这样才能返回主键id 另外不用加 selectKey标签
tony4geek 2016-02-24
  • 打赏
  • 举报
回复
我没环境测试。不同jar 版本 dtd 版本都可能发生问题。 我觉得7楼的办法也是可以的。useGeneratedKeys="true" keyColumn="id" keyProperty="id" 像这种,
funnyone 2016-02-23
  • 打赏
  • 举报
回复
会回写到参数对象中的。返回值表示影响行数,标准操作。
mengjg321 2016-02-23
  • 打赏
  • 举报
回复
引用 9 楼 rui888 的回复:
<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


你好 我这报错了 哥哥 您看应该怎么解决啊

tony4geek 2016-02-23
  • 打赏
  • 举报
回复
<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
土豆你个番茄 2016-02-23
  • 打赏
  • 举报
回复
这是我的配置文件 <!-- 添加厂区 --> <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>
土豆你个番茄 2016-02-23
  • 打赏
  • 举报
回复
引用 7 楼 zhengjf123 的回复:
这是我的配置文件 <!-- 添加厂区 --> <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>
我觉得你少了一个配置属性
useGeneratedKeys="true" keyProperty="id">
mengjg321 2016-02-23
  • 打赏
  • 举报
回复
引用 4 楼 rui888 的回复:
[quote=引用 3 楼 mengjg321 的回复:] [quote=引用 2 楼 rui888 的回复:] http://blog.csdn.net/jbgtwang/article/details/7307687
我都看过这样的 针对 sqlserver 的 是不行的啊 [/quote] 报错吗?和你的jar版本有没有关系呢?[/quote] 是报错的 报的不是内置函数
scmod 2016-02-23
  • 打赏
  • 举报
回复
我记得要返回key要数据库支持 然后是insert标签里面要加上key还是什么的有个关键字的..然后在你插入那个实体类里面的id属性才会有值
tony4geek 2016-02-23
  • 打赏
  • 举报
回复
引用 3 楼 mengjg321 的回复:
[quote=引用 2 楼 rui888 的回复:] http://blog.csdn.net/jbgtwang/article/details/7307687
我都看过这样的 针对 sqlserver 的 是不行的啊 [/quote] 报错吗?和你的jar版本有没有关系呢?
mengjg321 2016-02-23
  • 打赏
  • 举报
回复
引用 2 楼 rui888 的回复:
http://blog.csdn.net/jbgtwang/article/details/7307687
我都看过这样的 针对 sqlserver 的 是不行的啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧