mybatis:mapper不执行的问题
最近帮一个小老弟解决一个小bug。
问题描述:login登录,服务器不响应。debug执行到mapper调用xml时不执行,且没有报错。
问题排错:
- 页面请求进入了controller,确定是服务器的问题。
- mapper和xml是mybatis generator自动生成的,不存在错误。
- 检查两个主要配置文件,如下:
spring-bean.xml
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="url" value="${dataSource.url}"></property>
<property name="driverClassName" value="${dataSource.driver}"></property>
</bean>
db.properties
dataSource.username=root
dataSource.password=root
dataSource.url=jdbc:mysql://192.168.137.3:3306/test
dataSource.driver=com.mysql.jdbc.Driver
检查一遍,没有任何问题。然后我把自己的配置copy进去,发现程序正常执行了。可知是配置文件出了差错。
我配置文件如下:
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="${datasource.username}"></property>
<property name="password" value="${datasource.password}"></property>
<property name="url" value="${datasource.url}"></property>
<property name="driverClassName" value="${datasource.driver}"></property>
</bean>
datasource.username=root
datasource.password=root
datasource.url=jdbc:mysql://192.168.137.3:3306/test
datasource.driver=com.mysql.jdbc.Driver
经过仔细对比发现:datasource和dataSource,一个S大写,一个s小写。然而bean中引用db中的key,如果两边一致按理说是没有任何问题的,这也是第一遍检查配置文件没有找到问题的原因。但实际上通过测试,发现datasource小写的,程序执行没有问题;dataSource大写,程序执行mapper就会卡主。
最后解决方案,当然是bean和db文件,datasource都改成 小写就好了。但是为什么两个配置文件都用dataSource就不行呢?这就引发了另一个思考。