mybatis使用jdbc username 获取到window账户的用户名

来源:互联网 发布:加工中心倒角c1编程 编辑:程序博客网 时间:2024/05/16 17:29

错误

Caused by: java.sql.SQLException: Access denied for user 'zheng-zy'@'localhost' (using password: YES)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4280)    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1258)    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2239)    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)    ... 86 more

代码:

#mysql database settingdriver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/db_zssmusername=rootpassword=666666#定义初始连接数  initialSize=1#定义最大连接数  maxActive=20#定义最大空闲  maxIdle=20#定义最小空闲 minIdle=1#定义最长等待时间  maxWait=60000

spring-mybatis配置文件

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"        destroy-method="close">        <property name="driverClassName" value="${driver}" />        <property name="url" value="${url}" />        <property name="username" value="${username}" />        <property name="password" value="${password}" />        <!-- 初始化连接大小 -->        <property name="initialSize" value="${initialSize}"></property>        <!-- 连接池最大数量 -->        <property name="maxActive" value="${maxActive}"></property>        <!-- 连接池最大空闲 -->        <property name="maxIdle" value="${maxIdle}"></property>        <!-- 连接池最小空闲 -->        <property name="minIdle" value="${minIdle}"></property>        <!-- 获取连接最大等待时间 -->        <property name="maxWait" value="${maxWait}"></property>    </bean>

测试:

spring-context.xml

    <!-- 配置自动扫描 -->    <context:component-scan base-package="com.base" />    <!-- 加载配置属性文件 -->    <context:property-placeholder ignore-unresolvable="true" location="classpath:jdbc.properties" />    <bean id="mybatisUser" class="com.base.realm.MybatisUser">        <property name="userName" value="${username}"/>    </bean>

MybatisUser.class

public class MybatisUser {    private String userName;    public MybatisUser() {    }    public MybatisUser(String userName) {        this.userName = userName;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    @Override    public String toString() {        return "MybatisUser [userName=" + userName + "]";    }}

TestMybatisUserName.class

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:spring-context.xml", "classpath:spring-mybatis.xml"})public class TestMybatisUserName {    @Resource    private MybatisUser mybatisUser = null;    @Test    public void test() {        System.out.println("userName:"+mybatisUser.getUserName());    }}

验证结果:

这里写图片描述

原因:

是因为属性冲突,配置文件里的username换成其他的名字, 如jdbc.username

usernamewindowsadministratoradministratorWindows{jdbc.username}这样就可以唯一识别用户名而不会和Windows冲突。

0 0
原创粉丝点击