Mybatis注解和配置文件命名规范所引发的问题
程序员文章站
2023-03-31 12:39:28
最近做SSM项目,在编写完login方法后,运行测试就发生错误。 报错如下: Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC C ......
最近做ssm项目,在编写完login方法后,运行测试就发生错误。
报错如下:
error querying database. cause: org.springframework.jdbc.cannotgetjdbcconnectionexception: could not get jdbc connection; nested exception is java.sql.sqlexception: access denied for user 'minli'@'localhost' (using password: yes)
根据提示,应该是mysql的用户名和密码错误导致的问题,查看database配置文件,也没有发现问题。
database配置文件:
driver=com.mysql.jdbc.driver
url=jdbc:mysql://localhost:3306/hotel
username=root
password=root
然后查看了一下dao接口:
1 package cn.hotel.dao; 2 3 import cn.hotel.entity.user; 4 import org.apache.ibatis.annotations.param; 5 6 import java.util.list; 7 8 public interface userdao { 9 public user login(@param("username") string username, @param("password") string password, @param("status") integer status); 10 11 public integer add(user user); 12 13 public integer update(user user); 14 15 public user getuserbyid(integer id); 16 17 public list<user> getalluser(); 18 }
很寻常的crud,应该不至于出现问题。
然后查看了spring的配置文件,关于datasource的配置是这样的:
1 <context:property-placeholder location="classpath:database.properties"/> 2 3 <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> 4 <property name="driverclassname" value="${driver}"/> 5 <property name="url" value="${url}"/> 6 <property name="username" value="${username}"/> 7 <property name="password" value="${password}"/> 8 </bean>
一直这样使用也没有问题。但是忽然发现一点,在配置文件中mybatis的命名和@param中参数的命名都是一致的,会不会是这个原因导致的呢。
于是修改database配置文件:
database.driver=com.mysql.jdbc.driver
database.url=jdbc:mysql://localhost:3306/hotel
database.username=root
database.password=root
修改spring配置文件datasource部分:
<context:property-placeholder location="classpath:database.properties"/> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="${database.driver}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> </bean>
问题得到解决!
总结:
在使用mybatis带@param参数注解功能时,要避免名称和数据库配置文件对应的字段名称相同,否则就会出现无法连接数据库的情况。