你看你的异常信息,空指针异常,
getcount1()-->
System.out.println(bean); bean是null,
System.out.println(bean.getcount()); -->bean
.getcount()空指针异常
这个就是我主要想问的原因,按道理来说他应该去查询selectcount(1)fromdual返回的结果值吧
你的dao上面没有加注解
@Repository
publicinterfaceTestDao{
publicintgetcount();回复
@minidai:同问我也报的一样的错误1111111111importorg.springframework.stereotype.Repository;@RepositorypublicinterfaceTestDao{publicintgetcount();}加了之后也是一样的效果,还是nullhttp://mybatis.org/spring/zh/sample.html上面那个是中文文档说明,并且该连接有官网实例,建议通过该实例进行学习。先将官网实例跑通,再自行搭建环境
System.out.println(new
TestServiceImpl().getcount1());
这里new一个serviceImpl?? ????应该不能这样吧?
回复
@minidai:解决就好看看我下面的评论,谢谢回复
@minidai:注入,跟serviceImpl引入dao应该一样的吧?那我应该怎么通过前台来调用这个service呢
没仔细看,但是发现你吧xml放到了java的包里面,请移到resource里面,因为maven结构的java包只编译Java文件,其他都放到resource里面你好,我将XML文件移动到了resource下面的mybatis/mapper里面,然后配置文件里面写的是classpath:mybatis/mapper/*.xml,但是他却查找的是C:\Users\ADMINI~1\AppData\Local\Temp\0-appmanager\WEB-INF\classes\mybatis\mapper\TestDaoMapper.xml
@Autowired
TestServiceImplte ;
@RequestMapping("/demo2")
publicStringtest2(){
System.out.println("demo2");
System.out.println(te.getcount1());
return"demo";
}
我修改为这样就可以调用了,,不过又出现一个问题
我配置的mapper文件命名是classpath:appmanager/dao/impl/*.xml
但是他去找的Theerrormayexistinfile[C:\Users\ADMINI~1\AppData\Local\Temp\0-appmanager\WEB-INF\classes\appmanager\dao\impl\TestDaoMapper.xml]
这里我就不是很明白了,这是编译的问题还是我设置的问题呢。
@minidai你eclipse里的server设置看过了么?回复
@杨延庆:还请你指教一下,在哪里看service设置输出目录回复
@minidai:那就要看你的项目了,你的server输出设定是不是放到Temp目录下了回复
@杨延庆:但是其他的spring配置文件也是这样写的,就是直接在项目下的classpath里面去找的,就是这个mapper文件不是你build的目录是WEB-INF,那当然classpath到这个目录下去找Mapper.xmlw文件
谢谢各位,,我已经找到原因了,,最开始的问题是我使用service的时候使用方式错了,
正确的调用应该是
@AutowiredTestServiceImplte;@RequestMapping("/demo2")publicStringtest2(){System.out.println(te.getcount1());return"demo";}
后来的查询mapper问题我把数据库的账号密码直接输入在配置文件之后就没出现了,现在已经全部链接通畅了,谢谢各位
引用来自“alexgaoyh”的评论
System.out.println(new
TestServiceImpl().getcount1());
这里new一个serviceImpl?? ????应该不能这样吧?
引用来自“梦想沙漏”的评论
没仔细看,但是发现你吧xml放到了java的包里面,请移到resource里面,因为maven结构的java包只编译Java文件,其他都放到resource里面恩,当时没仔细看,你new一个对象没有通过spring的容器管理,是无法完成自动注入的。不过你已经找到原因就ok了