请问使用JdbcTemplate新增数据如何获得改数据的自增id?

yp0123456789 2011-02-18 10:52:26
请问使用JdbcTemplate做insert操作的时候。该表的主键为自增。我需要改条数据的id作为外键进行其他操作。用update的方法好像不能返回插入的对象。请问如何获得改id。
ps:请别说hibernate与ibatis。
...全文
994 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyishuoone 2012-03-15
  • 打赏
  • 举报
回复
其实, 也想知道
magong 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yp0123456789 的回复:]

对了还有底层dao本来就应该是解决与数据库无关性的耦合度。如果那么些耦合度太高了,不好。
[/Quote]
对。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yp0123456789 的回复:]
引用 11 楼 magong 的回复:
引用 9 楼 yp0123456789 的回复:

引用 5 楼 magong 的回复:
只要是一个批一次性提交执行的语句,怎么可能是脏数据呢?

mssqlserver的话,在insert查询字符串后加一条select @@IDENTITY当场返回一个整型值就OK了。

insert应该是插入字符串吧?既是你所说的“当场”也必须是执行ins……
[/Quote]
对了还有底层dao本来就应该是解决与数据库无关性的耦合度。如果那么些耦合度太高了,不好。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 magong 的回复:]
引用 9 楼 yp0123456789 的回复:

引用 5 楼 magong 的回复:
只要是一个批一次性提交执行的语句,怎么可能是脏数据呢?

mssqlserver的话,在insert查询字符串后加一条select @@IDENTITY当场返回一个整型值就OK了。

insert应该是插入字符串吧?既是你所说的“当场”也必须是执行insert后吧?多线程访问难道不是脏数据?
……
[/Quote]
那样好像不符合机制把?而且返回值也不好处理。还是用标准的比较好。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 magong 的回复:]
还有,我7楼所引应该是正解,LZ看看吧。
[/Quote]
谢谢呀。3次连续回复没法回了。从别处搜到了第一个方法,在用。你那个确实是正确的。没有更简便的吗?用哪个应该封装一下比较好吧。
magong 2011-02-18
  • 打赏
  • 举报
回复
还有,我7楼所引应该是正解,LZ看看吧。
magong 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yp0123456789 的回复:]

引用 5 楼 magong 的回复:
只要是一个批一次性提交执行的语句,怎么可能是脏数据呢?

mssqlserver的话,在insert查询字符串后加一条select @@IDENTITY当场返回一个整型值就OK了。

insert应该是插入字符串吧?既是你所说的“当场”也必须是执行insert后吧?多线程访问难道不是脏数据?
[/Quote]
当场,
指的是同一个批(batch)。
同一个批中的所有语句同时提交数据库、同批次被编译并运行。

我的意思就是不要在Java中两次访问数据库,而是一次访问数据库,提交一个字符串(但是含两条指令)给服务器执行。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zn85600301 的回复:]
MYSQL http://database.51cto.com/art/201010/229326.htm
sqlserver 有自动增长列
还有自增主键事数据库的事 和hibernate与ibatis没什么关系
[/Quote]
你让我情何以堪?是和hibernate与ibatis没什么关系,和spring的JdbcTemplate也没关系。。。好吧你赢了。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 magong 的回复:]
只要是一个批一次性提交执行的语句,怎么可能是脏数据呢?

mssqlserver的话,在insert查询字符串后加一条select @@IDENTITY当场返回一个整型值就OK了。
[/Quote]
insert应该是插入字符串吧?既是你所说的“当场”也必须是执行insert后吧?多线程访问难道不是脏数据?
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjliuqf 的回复:]
楼主你多大?和你从小玩到大的朋友娶了一个比他小18岁的老婆?违法了吧?
[/Quote]
你说什么呢?聊天吗?违法。法定结婚年龄应该是22和20吧。不过不是大问题。
magong 2011-02-18
  • 打赏
  • 举报
回复
又搜了一个方案,通用性好一些,LZ做个参考吧。

http://sarin.javaeye.com/blog/869978
zn85600301 2011-02-18
  • 打赏
  • 举报
回复
MYSQL http://database.51cto.com/art/201010/229326.htm
sqlserver 有自动增长列
还有自增主键事数据库的事 和hibernate与ibatis没什么关系
magong 2011-02-18
  • 打赏
  • 举报
回复
只要是一个批一次性提交执行的语句,怎么可能是脏数据呢?

mssqlserver的话,在insert查询字符串后加一条select @@IDENTITY当场返回一个整型值就OK了。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
想着从数据库中得到值那是不行的。多线操作可能是脏数据。
yp0123456789 2011-02-18
  • 打赏
  • 举报
回复
mysql以后可能是sqlserver。
magong 2011-02-18
  • 打赏
  • 举报
回复
LZ什么数据库啊?

67,512

社区成员

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

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