IBatis插入一条记录后,如何返回记录ID值

问题描述

下面是IBatis将用户插入数据库的例子:1. MySQL定义CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` char(80) NOT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))2. User定义public class User { private Long id; private String name; private int age;...}3. 定义UserMapper<mapper namespace="org.hyn.maper.UserMapper"><insert id="insert" parameterType="org.hyn.bean.User">insert into author(name,age) values(#{name},#{age}) </insert></mapper>4. 增加一个用户的程序片段ApplicationContext aContext = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");UserMapper userMapper = aContext.getBean(UserMapper.class);User user = new User();user.setName("张三");user.setAge(18);userMapper.insert(user);问题:如何才能得到加入记录"张三"的ID值? 能在插入时直接回填ID吗?

解决方案

纠正一下1楼的说法,返回值是2楼SQL-Map中要加上的 @@IDENTITY 把它强转为String或int都可以,下面是int的写法:public int insert(User user) throws DAOException { return ((Integer)getSqlMapClientTemplate().insert("insert", user)).intValue();}
解决方案二:
<mapper namespace="org.hyn.maper.UserMapper"> <insert id="insert" parameterType="org.hyn.bean.User"> insert into author(name,age) values(#{name},#{age}) <selectKey resultClass="int" keyProperty="id" > SELECT @@IDENTITY AS ID </selectKey> </insert> </mapper>
解决方案三:
UserMapper 里调用的如果是 iBatis 的 insert 方法的话,insert方法的返回值本身就是Object,其实就是写进去的对象把这个返回值强转为 User,就是啦,不光id,name也有。

时间: 2024-09-19 08:56:21

IBatis插入一条记录后,如何返回记录ID值的相关文章

如何得到上一次插入记录后自动产生的ID

插入   如何得到上一次插入记录后自动产生的ID 作者:淘特网 出处:淘特网 注:转载请注明出处 如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY 说明:在一条 INSERT.SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值.若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL.若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值.如果此语句激发一个或多个执

form表单上传图片-提交给php方法,成功后想返回前台一些值,但前台始终无法获取到参数值。急!!!

问题描述 form表单上传图片-提交给php方法,成功后想返回前台一些值,但前台始终无法获取到参数值.急!!! form表单部分代码:以此来实现form提交页面不跳转. <form action="user.php" method="post" ENCTYPE="multipart/form-data" target="id_iframe"> <input name="upfile" ty

一览画面点击复选框后获取多个id值的方法_javascript技巧

在web开发中经常会遇到一览画面中每一条记录前都带一个复选框,点击后选中该条记录进行删除.修改.查看等操作. 修改和查看都是获取一条记录的id值后传递到后台进行查询获取该记录对象的各种属性值,再显示到画面上. 我说的重点是选中多条记录后进行批量删除,如何获取多条记录的id值是问题的关键.首先是在jsp页面中全选中复选框的方法. 代码如下: function checkEvent(name, allCheckId) { var allCk = document.getElementById(all

请问,为什么使用OleDbCommand.ExecuteNonQuery()插入一条记录,插入成功后,返回值还是为0?

问题描述 privatestaticvoidPrepareCommand(OleDbCommandcmd,CommandTypecmdType,stringcmdText,OleDbParameter[]cmdParms){cmd.CommandType=cmdType;cmd.CommandText=cmdText;if(cmdParms!=null)foreach(OleDbParameterparmincmdParms)cmd.Parameters.Add(parm);}publicsta

Mysql插入记录后返回该记录ID

  最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表.研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数. liehuo.net LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column

插入一条记录人事专员录入档案信息确认无误后提交,该条档案状态为“待复核”。由人事经理复核后状态变为“正常”

问题描述 插入一条记录人事专员录入档案信息确认无误后提交,该条档案状态为"待复核".由人事经理复核后状态变为"正常"功能怎么实现? 解决方案 解决方案二:我做OA的时候用的是一个流程,若审批流程的最后一个人审核通过,则返回一个End的标示符.根据收到的End标示符回写该单据的状态.解决方案三:用Java语言实现做hR人力资源管理系统

mysql(表:InnoDB,无索引),批量插入50万条记录后,越来越慢。

问题描述 mysql(表:InnoDB,无索引),批量插入50万条记录后,越来越慢. 插入10000条,已用时0秒 插入20000条,已用时2秒 插入30000条,已用时3秒 插入40000条,已用时3秒 插入50000条,已用时4秒 插入60000条,已用时5秒 插入70000条,已用时6秒 插入80000条,已用时7秒 插入90000条,已用时8秒 插入100000条,已用时9秒 插入110000条,已用时11秒 插入120000条,已用时12秒 插入130000条,已用时13秒 插入140

如何在插入一条记录后即得到主键ID(自动增量)的值?

问题描述 表temp_table id U_name U_tel 1 zhang 123456 2 wang 123455 当我执行完:insert into temp_table(U_name,U_tel) values('li','123456')后就要得到这条记录的ID值为多少!?应该怎么做? 直接在这条语句后用id=rs("id"),而获得的值为空! 注:如果再重新查询一次,如用rs.movelast,个人认为这样可能会得到一个错误的(不对应的)IDA的主键是B的外键,A的一条

三种返回mysql 插入一条记录返回该记录id方法

三种返回mysql教程 插入一条记录返回该记录id方法 方法一 id int(11) not null pri key auto_increment,name varchar(12),backup varchar(50) 现在想插入一条记录的同时,返回他的id值(插入时只是插入name和backup字段的值).请问该如何写这条语句.谢谢! 你的担心完全多于. 不需要锁表, 返回的ID肯定是你的,基于当前连接session 自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCRE