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

本文介绍了一个关于MySQL数据库连接的问题及解决方法。问题表现为使用特定用户名时出现“Access denied”错误,原因是该用户名与Windows系统用户名冲突。解决方案是更改配置文件中的用户名变量名称,避免与系统级用户名重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误

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 setting
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db_zssm
username=root
password=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冲突。

好的!以下是关于如何掌握 IDEA 工具使用以及 MyBatis 框架搭建的相关内容: --- ### **1. 掌握 IDEA 工具使用** IDEA(IntelliJ IDEA)是一款功能强大的 Java 集成开发环境,广泛应用于企业级开发中。其高效的功能和插件支持使得开发者可以更快速地编写、调试和部署代码。 #### 基本操作步骤: 1. **安装与配置** - 下载并安装 IntelliJ IDEA(社区版即可满足基本需求)。 - 安装完成后,打开软件,选择合适的主题和语言设置。 2. **创建项目** - 点击 `File -> New Project` 创建一个新的 Maven 或 Gradle 项目。 - 如果需要连接数据库,可以在 `Database Tool Window` 中添加数据源,并测试连接是否成功。 3. **常用快捷键** - `Ctrl + Shift + F10`: 运行当前文件。 - `Alt + Insert`: 自动生成 getter/setter 方法或其他模板代码。 - `Shift x2`: 全局搜索功能,方便查找资源或功能模块。 4. **插件管理** - 打开 `Settings -> Plugins` 可以安装一些常用的插件,例如:Lombok 插件用于简化代码书写;Maven Helper 插件辅助分析依赖冲突等。 --- ### **2. 掌握 MyBatis 框架搭建及使用** MyBatis 是一款优秀的持久层框架,它避免了几乎所有的 JDBC 代码和手动设置参数及获取结果集的过程。通过 XML 文件或注解的方式将 SQL 映射到实体类上。 #### 步骤一:引入 MyBatis 相关依赖 如果你正在使用 Maven 构建项目,在 `pom.xml` 文件中加入以下依赖项: ```xml <dependencies> <!-- mybatis核心 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <!-- 数据库驱动 (如MySQL)--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> ``` #### 步骤二:配置 MyBatis 核心文件 (`mybatis-config.xml`) 在项目的 resources 目录下新建该配置文件,内容如下所示: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件 --> <properties resource="db.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 引入Mapper映射文件路径 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 同时还需要准备一个名为 `db.properties` 的小文件保存数据库信息。 #### 步骤三:定义 Mapper 和对应的 DAO 层接口 首先建立 Entity 类表示表结构对应的数据模型。然后基于此生成 Mapper XML 文档定义 CRUD 操作规则。 示例 User.java 实体类: ```java public class User { private Integer id; private String username; // Getters and Setters... } ``` 接着构建接口形式的访问规范 UserMapper.java 并配套实现具体查询逻辑存储于同名 .XML 当中。 最后利用 SqlSessionFactoryBuilder 来初始化会话实例执行交互流程验证效果即告一段落啦! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值