非Spring環境下,Mybatis+Druid對數據庫密碼加密


導入jar包(mybatis+druid+mysql)

使用druid生成加密后的密碼

在jar包所在路徑下,打開cmd窗口,執行:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools yourpassword

執行后生成

privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA4dZRH41lYjJDwSiWJu9xfZ1P26b3Anj34zUlMgednN317hDOEkKosIfH9TKCjdO2DJVUKkYMAl1E8nFOwtOGDwIDAQABAkAu6AC5ePjRyHbiK7fkJl+AI6huiuNLFC0IeAVdus81wVBsBzXyeL6xA0Zi7fyC4ozBoSdw+TKQycYcAKNi/j2BAiEA8txEkPTXapI7WwMZkVRXr8bkB6RQOOUNVrRGAlfwVP8CIQDuDkTd65FJOBCOOuku5Ri7CocTdey7F
FqO+JtmOkJ+8QIhAKeXGvXRD+pp+O3ISNeCFXSmUmt3lyh73+WKR5mMZ7uvAiByn6RBRuAZ5UjzcyI8VktmJFeN40YtfktsdAA/ZOYHwQIgHRA+jMmU8qcxoqIA/QlZtOE17T1JUWIzv2UTodJ54L4=
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOHWUR+NZWIyQ8EolibvcX2dT9um9wJ49+M1JTIHnZzd9e4QzhJCqLCHx/Uygo3TtgyVVCpGDAJdRPJxTsLThg8CAwEAAQ==
password:pQ3SPAMLel98ESuBsC3WLw9OdaX0Nu1MG0feSV4KhSJm4D5NyD7I1N/hfzXh93F/dhOyytrvSVzaSNqF/qh1LQ==

我們使用的是生成的password和publicKey,分別插入下面的mybatis-config.xml對應配置文件的No.1和No.2處

自定義數據源

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.DataSourceFactory;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Properties;

public class DruidDataSourceFactory implements DataSourceFactory {
    private Properties properties;

    @Override
    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public DataSource getDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(properties.getProperty("driver"));
        druidDataSource.setUrl(properties.getProperty("url"));
        druidDataSource.setUsername(properties.getProperty("username"));
        druidDataSource.setPassword(properties.getProperty("password"));

        try {
            druidDataSource.setFilters(properties.getProperty("filters"));
        } catch (SQLException e) {
            e.printStackTrace();
        }

        druidDataSource.setConnectionProperties(properties.getProperty("connectionProperties"));

        try {
            druidDataSource.init();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return druidDataSource;
    }
}

配置mybatis-config.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>
    <typeAliases>
        <typeAlias type="com.yuzhe.config.DruidDataSourceFactory" alias="DRUID"/>
        <typeAlias alias="User" type="com.yuzhe.entity.User" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="DRUID">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test001"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/> <!-- No.1-->

                <property name="filters" value="config"/> <!-- 此處傳的是個以,分割的字符串。比如可以設置為config,stat,wall,log4j;stat是開啟druid的監控。后續會說明在非web項目中如何使用druid自帶的監控功能-->
                <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=publicKey"/><!-- No.2-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/yuzhe/mapper/XXX.xml"/>
    </mappers>
</configuration>

 測試

package com.yuzhe.test;

import com.yuzhe.dao.UserMapper;
import com.yuzhe.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class Test {
    public static void main(String[] args) {
        InputStream inputStream = null;
        try{
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e){

        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();
       //執行CRUD操作
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM