首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring和MyBatis web应用程序从INSERT到MyBatis获取主键

使用Spring和MyBatis web应用程序从INSERT到MyBatis获取主键
EN

Stack Overflow用户
提问于 2015-07-08 18:26:59
回答 1查看 312关注 0票数 0

我是MyBatis新手,在SpringMyBatis应用程序中有一个服务类:

代码语言:javascript
复制
@Service("personServiceImpl")
public class PersonServiceImpl implements PersonService {

@Autowired
private PersonMapper personMapper;

static final Logger logger = Logger.getLogger(PersonServiceImpl.class.getName());

public PersonServiceImpl() { 
}

@Transactional
@Override
public void insert(Person person) {
    logger.info(PersonServiceImpl.class.getName() + ".insert() method called.");

    personMapper.insert(person);       
}

personMapper对象中,我有以下内容:

代码语言:javascript
复制
public interface PersonMapper {

@Insert("INSERT INTO Person(name, address, telephone, email) " +
        "VALUES (#{name},#{address}, #{telephone}, #{email})")          
@Options(useGeneratedKeys=true, keyProperty="Person_Id", flushCache=true, keyColumn="Person_Id")
public void insert(Person person);    

所有这些操作都很完美,但是如何在Person表中获得新创建的行的主键?

我可以做一个显式的SQL select,但是有更好的方法吗?

我正在使用Spring 4.0.2MyBatis 3.3.0Apache Derby 10.x

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-08 18:40:23

代码语言:javascript
复制
@Options(useGeneratedKeys=true, keyProperty="personId", flushCache=true, keyColumn="Person_Id")
public void insert(Person person);

KeyProperty引用POJO变量名,KeyColumn引用数据库中生成的列名。因此将其更新为

代码语言:javascript
复制
personId

插入后,

代码语言:javascript
复制
@Transactional @Override public void insert(Person person) { logger.info(PersonServiceImpl.class.getName() + ".insert() method called."); personMapper.insert(person); 
person.getPersonId();
}

将有您生成的ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31300754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档