springmvc整合Mybatis时出错
主要错误信息:
org.mybatis.spring.transaction.SpringManagedTransactionFactory.newTransaction(Ljava/sql/Connection;)Lorg/apache/ibatis/transaction/Transaction;
控制层中的代码:
public class StyleController {
@Autowired
private StyleMapper styleMapper;
@RequestMapping("/queryByOne")
public String queryByOne(HttpServletRequest request) throws IOException
{
/*
Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(reader);
SqlSession session =sqlSession.openSession();
StyleCategory style=session.selectOne("com.mybatis.dao.StyleMapper.getStyleCategoryInfoById",2);
*/
StyleCategory style = styleMapper.getStyleCategoryInfoById(2);
System.out.println(style.getStyleId()+":"+style.getStyleName());
request.setAttribute("style", style);
return "/index";
}
解决过程:
1.打了断点:发现styleMapper有值,不为null。
那就只能是getStyleCategoryInfoById()方法的问题。
2.通过
Reader reader =Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(reader);
SqlSession session =sqlSession.openSession();
StyleCategory style=session.selectOne("com.mybatis.dao.StyleMapper.getStyleCategoryInfoById",2);
方法可以获得到值。
那就说明sql映射文件和Mybatis主配置文件以及spring的配置也没有问题;
那问题就只能出现在作为中间连接的数据访问层的dao(xxxMapper)中的方法
;
解决方法:
jar包的问题: 之前用的是mybatis-spring-1.0.2.jar换成mybatis-spring-1.1.1.jar就不会有问题了。
出现该问题的包应该都是mybatis-spring-1.0.X.jar系列的。
下载地址:http://download.csdn.net/detail/u013147600/9074487