springmvc 整合mybatis dao层不写实现类

来源:互联网 发布:阿里云幕布 高清下载 编辑:程序博客网 时间:2024/06/11 14:06

在一个springmvc+mybatis 项目中发现dao层没有实现类并且 没有发现dao层注解但是在service 层确实用了

@Autowiredprivate Dao dao;

并且不报空指针的错误,随猜测在某个配置文件中必有一个自动注入dao层的东西 最终发现

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean>

<!-- myBatis文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --><property name="configLocation" value="classpath:configuration.xml" /><property name="mapperLocations" value="classpath:com/zyc/mapping/*/*.xml" /></bean>

spring+mybatis使用MapperScannerConfigurer 会引起的PropertyPlaceholderConfigurer无效问题

在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,他会优先于PropertyPlaceholderConfigurer执行,从而导致PropertyPlaceholderConfigurer失效,如果你的数据库连接配置这时用${jdbc.url}、${jdbc.driverClassName}等这样之类的表达式,将无法获取到properties文件里的内容。

解决方法 就是将配置文件的sqlSessionFactory 改名如

<!-- myBatis文件 --><bean id="mySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 --><property name="configLocation" value="classpath:configuration.xml" /><property name="mapperLocations" value="classpath:com/zyc/mapping/*/*.xml" /></bean>

上述解决方案是在

<property name="sqlSessionFactoryBeanName" value="mySqlSessionFactory" />
 这个属性名为 sqlSessionFactoryBeanName 的前提下。如果属性名为sqlSessionFactory 则行不通



0 0