下面是IBatis将用户插入数据库的例子:
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
)
)
User定义
public class User {
private Long id;
private String name;
private int age;
...
}
定义UserMapper
[code="java"]
insert into author(name,age) values(#{name},#{age})
[/code]
增加一个用户的程序片段
[code] 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);[/code]
问题:如何才能得到加入记录"张三"的ID值? 能在插入时直接回填ID吗?
纠正一下1楼的说法,返回值是2楼SQL-Map中要加上的 @@IDENTITY
把它强转为String或int都可以,下面是int的写法:
[code="java"]
public int insert(User user) throws DAOException {
return ((Integer)getSqlMapClientTemplate().insert("insert", user)).intValue();
}
[/code]
UserMapper 里调用的如果是 iBatis 的 insert 方法的话,
insert方法的返回值本身就是Object,其实就是写进去的对象
把这个返回值强转为 User,就是啦,不光id,name也有。
insert into author(name,age)
values(#{name},#{age})
SELECT @@IDENTITY AS ID