说明:本文转自http://blog.csdn.net/elifefly/archive/2008/09/16/2936070.aspx
与Oracle有所不同,ibatis中实现获取mysql自增序列值 收藏
新一篇: 根据传智播客ibatis视频教程编写的入门例子 | 旧一篇: ibatis-2.3.3.720的simple_example
xml文件中关键代码:
<!-- 添加用户,获取自动增长的序列号,处理添加相同的userId情况 -->
<insert id = "insertUserBySequence" parameterClass = "User">
<selectKey resultClass = "int" keyProperty = "userId">
SELECT @@IDENTITY as userId
</selectKey>
insert into user(userId,userName,userPassword,userFlag)
values(#userId#,#userName#,#userPassword#,#userFlag#);
</ insert >
IUserDAOImpl中代码:
1. //添加用户,获取自动增长的序列号,处理添加相同的userId情况
2. public void addUserBySequence(User user)
3. {
4. try
5. {
6. sqlMapClient.insert( "insertUserBySequence" ,user);
7. } catch (SQLException e)
8. {
9. // TODO Auto-generated catch block
10. e.printStackTrace();
11. }
12.
13. }
main中测试:
1. //7.测试addUserBySequence(User user)
2. System.out.println( "\n7.测试addUserBySequence(User user)" );
3. User user7 = new User();
4. user7.setUserId( 100 );
5. user7.setUserName( "good" );
6. user7.setUserPassword( "123456" );
7. user7.setUserFlag( "test" );
8.
9. iUserDAOImpl.addUserBySequence(user7);
10.
11. for (User user8:iUserDAOImpl.queryAllUser())
12. {
13. System.out.println(user8);
14.
15. }
总的来说,关键在于SELECT @@IDENTITY 这句SQL语句,就是获取当前自动增长的序列号的。
注意如果使用的数据库是Oracle,与MySql是不同的,相应的SQL语句也不同。
参考过http://blog.163.com/xinu_com/blog/static/141587520082292215628/ 这篇文章
发表于 @ 2008年09月16日 13:38:00 |评论(0 <script type="text/javascript">AddFeedbackCountStack("2936070")</script> ) |收藏