使用 Spring 和 MyBatis 网络应用从 INSERT INTO table_name 获取主键
Get primary key from INSERT INTO table_name using Spring and MyBatis web app
我是 MyBatis
新手,在 Spring
和 MyBatis
应用程序中有一项服务 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.2
、MyBatis 3.3.0
和 Apache 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。
我是 MyBatis
新手,在 Spring
和 MyBatis
应用程序中有一项服务 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.2
、MyBatis 3.3.0
和 Apache 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。