spring + mybatis 配置 SqlSessionFactoryBean
<bean id="sqlSessionFactory" name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--數據源-->
<property name="dataSource" ref="dataSource" />
<!--基礎實體類包路徑-->
<property name="typeAliasesPackage" value="${mybatis.model}" />
<!--mybatis 動態sql編寫mapper文件路徑-->
<property name="mapperLocations" value="${mybatis.mapperLocations}" />
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties" value="dialect=mysql"/>
</bean>
</array>
</property>
</bean>
代理接口dao通過MapperScanConfigurer掃描注入
<!--mapper 代理接口(dao)掃描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--這裏value 用properties文件引入死活不成功!-->
<property name="basePackage" value="com.prcsteel.peanut.dao" />
<!--單一數據源時可以不配製此項-->
<!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />-->
</bean>
參照網上的幾點建議:
1、<mapper namespace="com.prcsteel.peanut.dao.UserDao">
mapper文件namespace和dao路徑對應
2.UserDao的方法在UserMapper.xml中沒有,然後執行UserDao的方法會報此
3、UserDao的方法返回值是List,而select元素沒有正確配置ResultMap,或者只配置ResultType!
4、如果你確認沒有以上問題,請任意修改下對應的xml文件,比如刪除一個空行,保存.問題解決…
發現並無上述問題。仔細查看log,發現有這一段輸出:
[DEBUG] org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory - Property 'mapperLocations' was not specified or no matching resources found
SqlSessionFactoryBean 並沒有加載到對應的mapper xml文件,當然執行方法的時候也就找不到dao所對應的mapper,而無法執行對應的sql,查看maven target 的classes目錄下也並沒有mapper的xml文件出現。
原因:mapper文件並不是放在resource中,而是在java目錄,maven編譯的時候並沒有把xml文件編譯進來。
解決:在pom文件中添加resource編譯
<resources>
<resource>
<!--此處配置到java是因爲mapper.xml文件在java目錄-->
<directory>src/main/java</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>