天天看点

mybatis:mapper.xml不执行的问题

mybatis:mapper不执行的问题

最近帮一个小老弟解决一个小bug。

问题描述:login登录,服务器不响应。debug执行到mapper调用xml时不执行,且没有报错。

问题排错:

  1. 页面请求进入了controller,确定是服务器的问题。
  2. mapper和xml是mybatis generator自动生成的,不存在错误。
  3. 检查两个主要配置文件,如下:

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就不行呢?这就引发了另一个思考。