<insert id="abatorgenerated_insert" parameterClass="net.xxxxxl.dataobject.Users">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Fri Aug 21 21:21:33 CST 2015.
-->
insert into Users (user_Pwd, user_Nickname, user_Firstname, user_Lastname, user_Sex,
user_Birthday, FK_City, ....
user_LoginState, user_Collecter, user_Collected, user_lang, user_login_fail_times, user_Money,
weixin_openid)
values (#user_Pwd:VARCHAR#, #user_Nickname:VARCHAR#, #user_Firstname:VARCHAR#,
#user_Lastname:VARCHAR#, #user_Sex:CHAR#, #user_Birthday:VARCHAR#, #FK_City:BIGINT#,
.....
#user_login_fail_times:INTEGER#, #user_Money:DOUBLE#, #weixin_openid:VARCHAR#)
<selectKey keyProperty="userId" resultClass="java.lang.Long">
SELECT SCOPE_IDENTITY()
</selectKey>
</insert>

上面是 abator 生成的对应于ms sql server 的insert 代码,实际运行时,无法获取 插入记录对应的 id 值,虽然里面包含了:

    <selectKey keyProperty="userId" resultClass="java.lang.Long">
SELECT SCOPE_IDENTITY()
</selectKey>

正确的方法是,让 <selectKey> 子句包含住整个 insert 语句,如下所示:

  <insert id="abatorgenerated_insert" parameterClass="net.xxxxxx.dal.dataobject.Users">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Fri Aug 21 21:21:33 CST 2015.
-->
<selectKey keyProperty="userId" resultClass="java.lang.Long">
insert into Users (user_Pwd, user_Nickname, user_Firstname, user_Lastname, user_Sex,
user_Birthday, .....
weixin_openid)
values (#user_Pwd:VARCHAR#, #user_Nickname:VARCHAR#, #user_Firstname:VARCHAR#,
......
#user_login_fail_times:INTEGER#, #user_Money:DOUBLE#, #weixin_openid:VARCHAR#) SELECT SCOPE_IDENTITY()
</selectKey>
</insert>

这样才能正确的获取 insert 语句执行时对应的 id 主键值。

ms sql server 在abator生成的 insert 无法获取插入 id 的原因的更多相关文章

  1. iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

    iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 <!-- Oracle SE ...

  2. (火炬)MS SQL Server数据库案例教程

    (火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...

  3. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  4. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  5. MS SQL SERVER 中的系统表

    MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.   2 syscomments 包含每 ...

  6. Display Database Image using MS SQL Server 2008 Reporting Services

    原文 Display Database Image using MS SQL Server 2008 Reporting Services With the new release of MS SQL ...

  7. Oracle\MS SQL Server Update多表关联更新

    原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...

  8. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  9. MS SQL Server的COALESCE函数

    MS SQL Server的COALESCE函数是从一系列表达式中返回第一个NOT NULL的值. 检查[B],[Q],[S],[T],[U]的值: 检查顺序[B]->[Q]->[S]-& ...

随机推荐

  1. 快速清除文件夹svn版本控制信息

    将下面内容另存为clear.bat文件,在有版本控制的目录执行即可 @echo On @Rem 清除SVN版本控制信息 @for /r . %%a in (.) do @if exist " ...

  2. C#创建自定义配置节

    在.Net应用程序中,我们经常看到VS为我们生成的项目工程中都会含有nfig或者nfig这样的文件.这个文件就是我们所说的应用程序配置文件.在这个文件里面记述着一些与我们的应用程序相关的信息,如:数据 ...

  3. (二)Protobuf的C#使用

    [转]http://blog.csdn.net/shantsc/article/details/50729402 protobuf  c#版本分成两个版本,一个是protobuf-net,另一个是pr ...

  4. WebApi传参总动员(五)

    上回说到涉及多个实体的传参,用常规的方法已经不能解决了.这回我们用终极大招搞定她. WebApi:注意要引用JSON.Net [HttpPost] public string GetData(stri ...

  5. JQ关于浏览器宽高的获取方式

    JQ关于浏览器宽高的获取方式 alert($(window).height()); //浏览器时下窗口可视区域高度alert($(document).height()); //浏览器时下窗口文档的高度 ...

  6. ActiveReports 报表应用教程 (9)---交互式报表之动态排序

    在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取.过滤等功能可以让用户更方便地分析报表数据 ...

  7. ThinkPHP系的两个东东OneThink和ThinkCMF

    假设有这样一个命题:需要对一个已有系统进行移植,有没有什么系统是适合用来作为进行快速移植的基础的.能解决每个系统的基本问题,只需考虑相关业务逻辑问题. OneThink是TP团队官方出品. http: ...

  8. scons学习

    http://blog.csdn.net/andyelvis/article/category/948141 http://www.scons.org/doc/production/HTML/scon ...

  9. 使用PushSharp进行IOS发布应用的消息推送

    在做.NET向IOS设备的App进行消息推送时候,采用的是PushSharp开源类库进行消息的推送,而在开发过程中,采用的是测试版本的app,使用的是测试的p12证书采用的是ApnsConfigura ...

  10. fibonacci数列的和取余(1)

    As we know , the Fibonacci numbers are defined as follows:  """" Given two numbe ...