使用 Spring 和 MyBatis 网络应用从 INSERT INTO table_name 获取主键

Get primary key from INSERT INTO table_name using Spring and MyBatis web app

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

@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 对象中我有以下内容:

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 table 中获取新创建的行的主键?

我可以做一个明确的 SQL select 但有更好的方法吗?

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

@Options(useGeneratedKeys=true, keyProperty="personId", flushCache=true, keyColumn="Person_Id")
public void insert(Person person);

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

personId

插入后,

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

将有您生成的 ID。