<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.apache.ibatis.executor.keygen.CountryMapper" >
<insert id="insertList" parameterType="org.apache.ibatis.executor.keygen.Country" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into country (countryname,countrycode)
values
<foreach collection="list" separator="," item="country">
(#{country.countryname},#{country.countrycode})
</foreach>
</insert>
</mapper>
@Test
public void shouldInsertListAndRetrieveId() throws Exception {
Reader reader = Resources.getResourceAsReader("org/apache/ibatis/executor/keygen/MapperConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
CountryMapper mapper = sqlSession.getMapper(CountryMapper.class);
List<Country> countries = new ArrayList<Country>();
countries.add(new Country("China", "CN"));
countries.add(new Country("United Kiongdom", "GB"));
countries.add(new Country("United States of America", "US"));
mapper.insertList(countries);
for (Country country : countries) {
assertNotNull(country.getId());
}
} finally {
sqlSession.rollback();
sqlSession.close();
}
}
具体修复参见:https://github.com/mybatis/mybatis-3/pull/547
相关参考文章:https://my.oschina.net/zudajun/blog/674946