问题描述
在做SSM整合的时候,发现问题如下:
org.apache.ibatis.builder.BuilderException: Invaild bound statement(not found)

解决方法
解决方法如下:
1、检查Mybatis的Mapper.xml文件中namespace是否是对应接口;
2、mapper.xml中的resultType路径是否是对应实体类;
3、检查mybatisconfig.xml的mybatis主配置文件;
以上是Mybatis可能出现的问题。
但是在SSM整合的时候还有可能出现如下问题:
Mybatis测试,可以从数据库中取数据出来,但是Spring不能取到数据,那么这时候就需要检查配置文件Springcontext.xml。
将Mabatis的配置文件中
<mappers>
<!--
将这个标签中的配置转移到spring中
原来我是在mybatis.xml中配置Mapper.xml
出现报错
-->
<mapper resource="mapping/UserDao.xml"/>
</mappers>
springcongtext.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 将如下两行按照自己的项目添加进入即可-->
<property name="mapperLocations" value="classpath*:/mapping/**/*.xml"/>
<property name="configLocation" value="classpath:/Mybatis-config.xml"></property>
</bean>
单元测试代码
//测试spring能否从数据库取到数据
@Test
public void testSpring(){
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
ac.getBean(UserServiceImpl.class);
UserServiceImpl userService = (UserServiceImpl)ac.getBean(UserService.class);
List<User> all = userService.findAllUser();
for(User user : all){
System.out.println(user);
}
}
//测试mybatis能否从数据库取到数据
@Test
public void testMybatisselect() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("Mybatis-config.xml");
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(resourceAsStream);
SqlSession session = factory.openSession(true);
UserDao mapper = session.getMapper(UserDao.class);
List<User> all = mapper.findAllUser();
for (User user : all) {
System.out.println(user);
}
}
总结
以上就是对本次的问题做个记录,经过自己大量地检索和询问他人,最终解决了这个问题,供大家参考和自己记录。
本文记录了在整合Spring、SpringMVC和Mybatis(SSM)时遇到的数据获取问题及解决方案。主要问题包括:Mybatis的BuilderException错误,以及Spring无法从数据库取数据。解决方法涉及检查Mapper.xml的namespace、resultType配置,以及调整Springcontext.xml中的Mapper资源配置。通过单元测试验证了修复后的Spring和Mybatis都能正常从数据库获取数据。
714

被折叠的 条评论
为什么被折叠?



