ibatis获取数据插入mysql时的自增字段

rikimura2 2012-11-05 06:51:58
RT,ibatis获取数据插入mysql时的自增字段id,id是没有任何意义的自增主键,xml代码见下面,然后我在java里面用dao调用:Integer id = resCollDao.addMetadata(mData);System.out.println(id);,然后得到的id值始终为1,但是控制台能看到已经select出来的数据,是说这样select出来的数据不能直接在java里接吗?

<insert id="addMetadata" parameterType="MetadataBean"
useGeneratedKeys="true" keyProperty="id">
insert into cfsdc_metadata(
language,
contacterName,
unit,
position,
telephone,
fax,
address,
city,
province,
zip,
country,
email,
workhour,
createdTime
) values (
#{language},
#{contacterName},
#{unit},
#{position},
#{telephone},
#{fax},
#{address},
#{city},
#{province},
#{zip},
#{country},
#{email},
#{workhour},
#{createdTime}
)
<selectKey resultType="int" keyProperty="id" >
select @@IDENTITY as id
</selectKey>
</insert>


12-11-05@18:42:14 DEBUG - ooo Connection Opened
12-11-05@18:42:14 DEBUG - ==> Executing: insert into cfsdc_metadata( language, contacterName, unit, position, telephone, fax, address, city, province, zip, country, email, workhour, createdTime ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
12-11-05@18:42:14 DEBUG - ==> Parameters: null, null, null, null, null, null, null, null, null, null, null, null, null, null
12-11-05@18:42:14 DEBUG - ==> Executing: select @@IDENTITY as id
12-11-05@18:42:14 DEBUG - ==> Parameters:
12-11-05@18:42:14 DEBUG - <== Columns: id
12-11-05@18:42:14 DEBUG - <== Row: 15
12-11-05@18:42:14 DEBUG - xxx Connection Closed
1
...全文
541 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
volts88 2012-11-19
  • 打赏
  • 举报
回复
<selectKey resultClass="int" keyProperty="systemLogId"> select last_insert_id() as systemLogId from 表名 limit 1 </selectKey> 可以使用这的的方法
funi16 2012-11-08
  • 打赏
  • 举报
回复
引用 6 楼 rikimura2 的回复:
引用 5 楼 funi16 的回复:我上面举例子里的roomBookId, themeId就可以换成楼主的ID 试过了,也不行。。 后来用另一种方式解决这个问题了。
怎么解决的呢?
rikimura2 2012-11-08
  • 打赏
  • 举报
回复
引用 5 楼 funi16 的回复:
我上面举例子里的roomBookId, themeId就可以换成楼主的ID
试过了,也不行。。 后来用另一种方式解决这个问题了。
funi16 2012-11-07
  • 打赏
  • 举报
回复
我上面举例子里的roomBookId, themeId就可以换成楼主的ID
funi16 2012-11-07
  • 打赏
  • 举报
回复
<selectKey resultType="int" keyProperty="id" > select @@IDENTITY as id </selectKey> 这段可以修改下,看你用的是什么数据库,如果是mysql的话,形式是:<selectKey keyProperty="roomBookId" resultClass="java.lang.Integer"> <![CDATA[ SELECT LAST_INSERT_ID() AS roomBookId ]]> </selectKey> 如果是oracle、PG、MSSQL这些的话,要先对你要获取的列建立一个sequence,类似于: CREATE SEQUENCE t_theme_theme_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1; ALTER TABLE t_theme_theme_id_seq OWNER TO postgres; 然后在ibatis的插入语句里面写: <selectKey resultClass="Integer" keyProperty="themeId"> SELECT currval('t_theme_theme_id_seq') as themeId; </selectKey> 楼主可以去百度下currval的用法,它有几个类似的函数可以用。
  • 打赏
  • 举报
回复
应用mData.get自增ID resCollDao.add是返回插入成功的记录数
rikimura2 2012-11-06
  • 打赏
  • 举报
回复
自顶,求解~
rikimura2 2012-11-06
  • 打赏
  • 举报
回复
引用 2 楼 nanman 的回复:
应用mData.get自增ID resCollDao.add是返回插入成功的记录数
问题是mData现在是自己定义的往里面插得数据,ID是自增的,没有定义

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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