Mybatis注解和配置文件命名規范所引發的問題


最近做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參數注解功能時,要避免名稱和數據庫配置文件對應的字段名稱相同,否則就會出現無法連接數據庫的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM