关于mybatis批量插入出现“org.apache.ibatis.binding.BindingException: Type class com.hry.pojo.User is not known to the MapperRegistry.”的问题解决办法。
1.配置spring
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> <constructor-arg name="executorType" value="BATCH"></constructor-arg> </bean>
2.加入注解
@Autowired private SqlSessionTemplate sqlSessionTemplate;
大招:
看看文件目录比如我的,一定要注意mapper文件的位置,还有getMapper()方法里面写的class。
注意以上几点基本不会有错(ssm框架肯定是要通的)
测试代码:
// 指定spring配置文件 @ContextConfiguration(locations = {"classpath:spring/applicationContext.xml"}) @RunWith(SpringJUnit4ClassRunner.class) public class MapperTest { @Autowired private UserMapper userMapper; @Autowired private SqlSessionTemplate sqlSessionTemplate; @Test public void testCurd() { SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false); UserMapper mapper = sqlSession.getMapper(UserMapper.class); for (int i = 0; i < 1000; i++) { String uname = UUID.randomUUID().toString().substring(0, 5).replace("-", ""); mapper.insert(new User(null, uname, "123")); sqlSession.commit(); } System.out.println("批量成功"); } }
使用Junit单元测试一定要记得commit,否则是不会提交到数据库中取的。