liuyiqi2008
2011-04-27 12:03 阅读 531
已采纳

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条回答 默认 最新

  • 已采纳
    TonyLian TonyLian 2011-04-28 09:36

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

    点赞 评论 复制链接分享
  • TonyLian TonyLian 2011-04-27 20:02

    UserMapper 里调用的如果是 iBatis 的 insert 方法的话,

    insert方法的返回值本身就是Object,其实就是写进去的对象

    把这个返回值强转为 User,就是啦,不光id,name也有。

    点赞 评论 复制链接分享
  • TonyLian TonyLian 2011-04-28 09:33





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


    SELECT @@IDENTITY AS ID



    点赞 评论 复制链接分享

相关推荐