您的位置:首页 > 编程语言 > Java开发

mybatis错误:Invalid bound statement (not found): com.prcsteel.peanut.dao.UserDao.selectById

2016-08-02 16:14 609 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mybatis
相关文章推荐