java单元测试调用mybatis接口并执行
Posted 岑惜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java单元测试调用mybatis接口并执行相关的知识,希望对你有一定的参考价值。
今天想使用单元测试类,存储一些数据到mysql,可是,一直在报错,org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named \'locationService\' available
检查了好久,实属无奈找不出问题,试了一下手动构造注入javabean,奇迹的解决了这个问题。
单元测试具体写法:
1.使用注解@Before 读取dao层的xml配置文件,,注意,必须是dao层,否则找不到mybatis的会话工厂
2.需要使用构造注入service层的接口实现类后,程序才可以获取mapper接口,,否则mapper接口实例后参数为null,会报空指针异常
3.构造注入的service层实现类 <bean> 必须写在dao层的xml文件里,不可以在其他xml里单独注入再获取Javabean,否则会报错误创建bean。
当然,如果真的想写在一个新的xml文件里,可以将新xml导入到dao层xml配置文件里。
dao层xml文件模板:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context.xsd"> 9 <!-- 1.配置数据库相关参数properties的属性:${url} --> 10 <context:property-placeholder location="classpath:jdbc.properties"/> 11 12 <!-- 配置 数据源 --> 13 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> 14 <!-- 驱动 --> 15 <property name="driverClassName" value="${jdbc.driverClassName}"/> 16 <!-- url --> 17 <property name="url" value="${jdbc.url}"/> 18 <!-- 用户名 --> 19 <property name="username" value="${jdbc.username}"/> 20 <!-- 密码 --> 21 <property name="password" value="${jdbc.password}"/> 22 </bean> 23 24 <!-- 配置 Mybatis的工厂 --> 25 <bean class="org.mybatis.spring.SqlSessionFactoryBean"> 26 <!-- 数据源 --> 27 <property name="dataSource" ref="dataSource"/> 28 <!-- 配置Mybatis的核心 配置文件所在位置 --> 29 <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> 30 <!-- 配置pojo别名 --> 31 <property name="typeAliasesPackage" value="cn.cen2guo.clinic.entity"/> 32 <!--当mapper中的接口文件与xml文件在同一个包下但是不在同一级时--> 33 <!--需要指定mapper 的xml文件路径,如果在同一级则可不写--> 34 <!-- 否则会报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)--> 35 <property name="mapperLocations" value="classpath:cn/cen2guo/clinic/mapper/mapperXML/*.xml"/> 36 </bean> 37 38 <!--扫描mapper接口, 写在此包下即可被扫描到 --> 39 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 40 <property name="basePackage" value="cn.cen2guo.clinic.mapper"/> 41 </bean> 42 43 44 <!-- 导入my_javabean.xml,用于自定义注册构造注入的bean--> 45 <import resource="classpath:myxml/my_javabean.xml"/> 46 </beans>
自定义注册bean的xml文件模板:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <!-- 位置信息服务接口--> 7 <bean id="locationService" class="cn.cen2guo.clinic.service.serviceImpl.LocationServiceImpl"/> 8 9 </beans>
以上是关于java单元测试调用mybatis接口并执行的主要内容,如果未能解决你的问题,请参考以下文章