搜索

首页  >  问答  >  正文

java - 使用MyBatis能否动态修改数据库连接的密码

在使用MybatisSpring进行数据库操作时,我们通常将数据库连接的信息(url、用户名、密码等)配置到jdbc.properties里面。通过Spring加载这些信息,建立数据源。Mybatis的mapper使用数据源提供的数据库连接来访问数据库。

这种情况下,数据库的url、用户名、密码是提前配置好的,不能修改的,并且在服务器启动时就读取(通过Spring)了。

那么,有没有可能在运行期间,通过Java代码动态的修改用来进行数据库连接的用户名和密码信息。

比如,我在jdbc.properties里面配置的是:admin/123,但是运行期间外界给我传来一个新的数据库用户和密码:admin2/456,那么我能不能动态地将后续的数据库连接的用户名密码改成admin2/456?

PHP中文网PHP中文网2770 天前936

全部回复(1)我来回复

  • 怪我咯

    怪我咯2017-04-17 17:22:48

    首先要确定你要使用什么连接池,Druid 的话是Springmvc有这样的配置的

     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      init-method="init" destroy-method="close">
       <property name="driverClassName">
        <value>${jdbc.mysql.driver}</value>
       </property>
       <property name="url">
        <value>${jdbc.mysql.url}</value>
       </property>
       <property name="username">
        <value>${jdbc.mysql.username}</value>
       </property>
       <property name="password">
        <value>${jdbc.mysql.password}</value>
       </property>
       <!-- 连接池最大使用连接数 -->
       <property name="maxActive">
        <value>${maxActive}</value>
       </property>
       <!-- 初始化连接大小 -->
       <property name="initialSize">
        <value>${initialSize}</value>

    com.alibaba.druid.pool.DruidDataSource 这个类extend 了DruidAbstractDateSource 这个类里面有修改账号密码的方法

        public String getPassword() {
            return this.password;
        }
    
        public void setPassword(String password) {
            if(!StringUtils.equals(this.password, password)) {
                if(this.inited) {
                    LOG.info("password changed");
                }
    
                this.password = password;
            }
        }
    
    

    所以说是可以拿到dataSource 修改里面的用户名和密码的

    回复
    0
  • 取消回复