我是MyBatis新手,在Spring和MyBatis应用程序中有一个服务类:
@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表中获得新创建的行的主键?
我可以做一个显式的SQL select,但是有更好的方法吗?
我正在使用Spring 4.0.2,MyBatis 3.3.0和Apache Derby 10.x。
发布于 2015-07-08 18:40:23
@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。
https://stackoverflow.com/questions/31300754
复制相似问题