2017-06-14 44 views
0

我使用Spring,Mysql,MyBatis测试,但有一些问题。 我在tomcat上运行我的应用程序。我的配置文件如下。spring,mysql,mybatis test

根的context.xml

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> 
    <property name="driverClass" value="${jdbc.driver}"/> 
    <property name="url" value="${jdbc.url}​"/> 
    <property name="username" value="${jdbc.username}​" /> 
    <property name="password" value="${jdbc.password}​" /> 
</bean> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="classpath:mybatis-config-base.xml" /> 
    <property name="mapperLocations" value="classpath*:sample/dao/sql/*.xml" /> 
</bean> 

<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> 
    <constructor-arg index="0" ref="sqlSessionFactory" /> 
</bean> 

db.properties

jdbc.driver=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://127.0.0.1:3306/sample 
jdbc.username=player 
jdbc.password=qwer1234!! 

控制器和DAO是简单的选择。 当我呼叫控制器时,发生这种异常。

造成的:值java.sql.SQLException:拒绝访问用户 @ 'localhost' 的(使用密码:YES) '玩家€?' 在 com.mysql.jdbc.SQLError.createSQLException(的SQLError。 java:964)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)at com.mysql.jdbc.MysqlIO。 checkErrorPacket(MysqlIO.java:873)在 com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1710) 在com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)在 com.mysql。 jdbc.ConnectionImpl.coreConnect(ConnectionImpl。的java:2194) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2225) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024) 在com.mysql.jdbc。 ConnectionImpl(ConnectionImpl.java:779)在 com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:47)在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知 源)在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 源)在java.lang.reflect.Constructor.newInstance(未知来源) 在com.mysql.jdbc.Util.handleNewInstance(Util.jav一:425)在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) 在 org.springframework.jdbc.datasource .SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:140) 在 org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:153) 在 org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java :119) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ...... 57多个

跟踪已interesing消息。

造成的:值java.sql.SQLException: '?球员€' 访问被拒绝的用户@ 'localhost' 的(使用密码:是)

€? ====>这是从哪里来的?我检查了空白或空间。

我在相同的环境中有一个很好的工作代码。

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

import org.junit.Test; 

public class MySqlTest { 

    private final String DRIVER = "com.mysql.jdbc.Driver"; 
    private final String URL = "jdbc:mysql://127.0.0.1:3306/test"; 
    private final String USER ="player"; 
    private final String PW = "qwer1234!!"; 

    @Test 
    public void test() { 
     try{ 
     Connection connection = DriverManager.getConnection(URL, USER, PW); 
     PreparedStatement ps = connection.prepareStatement("select * from sample"); 
     ResultSet rs = ps.executeQuery(); 
     System.out.println(rs); 
     } catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

任何提示?

谢谢

回答

0

我自己找到了。 这是一个文件编码问题。