与Oracle有所不同,ibatis中实现获取mysql自增序列值
2008-09-16 13:38
555 查看
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中代码:
//添加用户,获取自动增长的序列号,处理添加相同的userId情况
public void addUserBySequence(User user)
{
try
{
sqlMapClient.insert("insertUserBySequence",user);
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
main中测试:
//7.测试addUserBySequence(User user)
System.out.println("/n7.测试addUserBySequence(User user)");
User user7 = new User();
user7.setUserId(100);
user7.setUserName("good");
user7.setUserPassword("123456");
user7.setUserFlag("test");
iUserDAOImpl.addUserBySequence(user7);
for(User user8:iUserDAOImpl.queryAllUser())
{
System.out.println(user8);
}
总的来说,关键在于SELECT @@IDENTITY 这句SQL语句,就是获取当前自动增长的序列号的。
注意如果使用的数据库是Oracle,与MySql是不同的,相应的SQL语句也不同。
参考过http://blog.163.com/xinu_com/blog/static/141587520082292215628/这篇文章
<!-- 添加用户,获取自动增长的序列号,处理添加相同的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中代码:
//添加用户,获取自动增长的序列号,处理添加相同的userId情况
public void addUserBySequence(User user)
{
try
{
sqlMapClient.insert("insertUserBySequence",user);
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
main中测试:
//7.测试addUserBySequence(User user)
System.out.println("/n7.测试addUserBySequence(User user)");
User user7 = new User();
user7.setUserId(100);
user7.setUserName("good");
user7.setUserPassword("123456");
user7.setUserFlag("test");
iUserDAOImpl.addUserBySequence(user7);
for(User user8:iUserDAOImpl.queryAllUser())
{
System.out.println(user8);
}
总的来说,关键在于SELECT @@IDENTITY 这句SQL语句,就是获取当前自动增长的序列号的。
注意如果使用的数据库是Oracle,与MySql是不同的,相应的SQL语句也不同。
参考过http://blog.163.com/xinu_com/blog/static/141587520082292215628/这篇文章
相关文章推荐
- MySQL实现类似Oracle序列的函数
- Oracle和mysql在实现分页上不同
- MySQL实现类似Oracle的序列
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- MySQL实现类似Oracle的序列
- ibatis使用HashMap作为返回结果时DB2,ORACLE,MYSQL对KEY大小写不同
- MySQL实现类似Oracle的序列
- MySQL实现类似Oracle的序列 - sequence
- 一次性获取多个oracle序列的值,实现关联表多数据的批量insert
- MySQL实现ORACLE序列(Sequence)的解决方案
- 基于Oracle,采用JDBC、Hibernate不同方式实现自定义序列主键生成
- jdbc实现篇-源码(Oracle、MySQL)-第一部分-Dirver注册和获取及Connection获取原理
- MySQL 实现Oracle序列
- MySQL实现类似Oracle的序列
- jdbc实现篇-源码(Oracle、MySQL)-第一部分-Dirver注册和获取及Connection获取原理
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- ibatis获取主键自动增长ID Oracle/MSSQL/mysql
- MySQL实现类似Oracle的序列
- 获取Oracle表结构时,两种OleDb驱动得到的列数据类型“DATA_TYPE”值的类型不同