spring、mysql、mybatis测试

Posted

技术标签:

【中文标题】spring、mysql、mybatis测试【英文标题】:spring, mysql, mybatis test 【发布时间】:2017-11-16 04:02:09 【问题描述】:

我正在使用 Spring、mysql、MyBatis 进行测试,但是有一些问题。 我在tomcat上运行我的应用程序。我的配置文件在下面。

root-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!!

Controller 和 DAO 是简单的选择。 当我调用控制器时,会发生这样的异常。

原因:java.sql.SQLException: Access denied for user 'player?€?'@'localhost'(使用密码:YES)在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) 在 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.java: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) 在 org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ... 57 更多

Trace 有有趣的消息。

原因:java.sql.SQLException: Access denied for user 'player?€?'@'localhost'(使用密码:YES)

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

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

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();
        
    

有什么提示吗?

谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于spring、mysql、mybatis测试的主要内容,如果未能解决你的问题,请参考以下文章

mybatis

论单元测试之重要性

spring、mysql、mybatis测试

09spring+mybatis

MyBatis源码分析 : 环境准备

第七天.spring boot 整合mybatis