ssm小练习出现的问题和解决方案

最近对spring,springmvc和mybatis三个框架进行了学习,今天做了一次整合练习,内容十分简单,类似于最初使用三层架构输出hello world。但是初次使用还是出现了一些问题,在此记录下来。

此次练习使用的ide为idea2017,使用maven管理jar包,后端为ssm,使用的数据库为mysql。mybatis使用了mapper接口代理,因此没有写出实现类。前期都很顺利,但是在给service层注入mapper的时候hui会出现编译时报错,报错内容为Cannot resolve bean。上网查找后,发现大多数出现编译时报错情况时都不影响正常使用,但是在我启动服务器并在前端界面填写表单提交后,cotroller层和service层均可正常调用,但是在调用mapper时抛出异常,异常内容为     Invalid bound statement (not found)  继续百度。网上给出的建议多为以下几条:

  1. 检查mapper.xml和mapper.java是否在相同路径下
  2. 检查mapper.xml的命名空间是否为mapper接口的全路径名
  3. mapper.xml中的sql语句是否有错
  4. mapper.xml中sql语句的id是否和mapper接口中的方法名相同且输入和返回值类型一致

在进行多次检查后发现以上问题均不存在,点开target文件夹后,发现dao层文件夹下只有mapper接口,并没有出现mapper.xml文件,经查找发现需要在pom.xml中添加以下内容。

<build>

<resources>
    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
    </resource>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
    </resource>
  </resources>

</build>

关闭idea,进入工作空间删除原有的target文件夹,打开idea启动服务器后再次查看target文件夹,发现这次mapper.xml文件出现了,再次调试发现仍然抛异常,但是提示信息为数据库的表不存在,经检查后发现是db.properties中的jdbc.url写错了,改正之后终于可以正常使用。但是idea仍然会在编译时报错,只是已经不影响使用。

另外,在查询过程中发现很多人给出的解决方法都是为mapper.java添加@Dao注解,并在dao层的配置文件中添加对dao层的包扫描,实际上在使用mybatis的mapper接口代理进行开发时,只需写出mapper接口和mapper文件不需要对其进行注解,在配置文件中也不需要对dao层进行包扫描。即不需要如下语句!

<context:component-scan base-package="*.*.dao"></context:component-scan>

 

但是应配置mapper扫描器!即应该添加如下语句!

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="此处为包名"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

到此为止,这次小练习的正常功能已经实现,idea的报错暂时不管了,因为此项目在myEclipse中是不会报错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值