IBatis插入一条记录后,如何返回记录ID值

下面是IBatis将用户插入数据库的例子:

  1. 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)
    )

  2. User定义
    public class User {
    private Long id;
    private String name;
    private int age;
    ...
    }

  3. 定义UserMapper
    [code="java"]

    insert into author(name,age) values(#{name},#{age})

    [/code]

  4. 增加一个用户的程序片段
    [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吗?

3个回答

纠正一下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



Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问