发表于: 2017-01-13 23:29:48
1 2178
今天完成的事情:
1、主要解决昨天遗留问题
2、好好学一下spring注解
明天计划的事情:
把重构代码赶紧写完,上传远程服务器,进行任务1下面的内容,尽快结束任务1,已经耽搁不少时间了
遇到的问题:
这个问题已经折磨我两天了,今天在莎莎师兄的帮助下终于解决了,现在把这两天遇到的问题记录下来,以后避免类似问题。
为了解决昨天的问题,上午又重新写了一个简单的demo测试,但还是碰到许多问题,先是自己粗心大意把StudentMapper.xml文件的resultMap属性的路径写错,报错:
Failed to parse config resource: class path resource [mybatis/mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.oeasy.entity.Student'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.oeasy.entity.Student
导致修改后,又报:
Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'mapperInterface'; nested exception is java.lang.IllegalArgumentException: Cannot find class [com.easy.mapper.StudentMapper]
这个问题是说找不到StudentMapper类,但是我并没有写过这个类,很长时间找不到原因,知道看到有资料讲到MapperFactoryBean类的mapperInterface属性,这个属性应该赋值为Dao接口,我并不知道这个用法结果把mapper赋给它了导致错误,修改后测试成功。
接着昨天的项目照着这个demo修改后测试正常,但是这个demo只是不用注解的方式,最终还是需要用注解的方式。经过各种折腾才测试成功。
1)不使用注解的单元测试:
application.xml部分代码
mybatis配置文件部分需要配置;
单元测试部分需要通过@before初始化
这样就可以了。
2)使用注解进行单元测试时
application.xml部分代码
mybatis配置文件部分需要配置;
要注意的是,用注解时不需要mapper属性,加上的话反而造成重复报错:
但是不用注解时如果没mapper会报 Invalid bound statement (not found): com.oeasy.dao.StudentDao.getAll错。
另外,使用注解进行单元测试因为测试类是继承了测试基类SpringTestCase
所以,测试类不需要用@Before进行初始化
收获:
1、spring配置文件中,配置数据源两种方式
1)不使用properties配置
2)使用properties配置
2、这两天被这个问题折腾了不少时间,今天解决之后,对mybatis和spring框架都熟悉了不少,也算是不错的收获吧。
3、今天还重新学了一下spring注解方面的知识,主要参考了下面一篇文章,感觉还不错,把链接贴在下面。
评论