MyBatisのプロパティ

プロパティ属性では、システムの一部の動作パラメータを構成でき、これらのパラメータをJavaコードの代わりに XML ファイルまたはプロパティ ファイルに配置できます。  この利点は、コードの再コンパイルを発生させずにパラメータを変更するのに便利であることです。一般的に、MyBatis はプロパティを使用する 3 つの方法を提供します。

  • プロパティの子要素。
  • プロパティファイル。
  • プログラムコードの転送。

プロパティの子要素

次のコードに基づいて、property サブ要素を使用して、以下に示すようにデータベース接続の関連構成を書き換えます。

<?xml version="1.0"coding="utf-8"?> 
<!DOCTYPE 構成 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis -3-config.dtd"> 
<configuration> 
    <properties> 
        <property name="driver" value="com.mysql.jdbc.Driver" /> 
        <property name="url" value="jdbc:mysql:// localhost:3306/mybatis?characterEncoding=utf8" /> 
        <property name="username" value="root" /> 
        <property name="password" value="1128" /> 
    </properties> 
    <typeAliases> 
        <typeAlias エイリアス="役割" タイプ = "com.mybatis.po.Role"/> 
    </typeAliases> 
    <!--データベース環境-->  
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" /> 
            <dataSource type="POOLED"> 
                <property name="driver" value="com.mysql.jdbc.Driver" /> 
                <property name="url" value="jdbc:mysql ://localhost:3306/mybatis?characterEncoding=utf8" /> 
                <property name="username" value="root" /> 
                <property name="password" value="1128" /> 
            </dataSource> 
        </environment > 
    </environments> 
    <!-- 映射文件 --> 
    <mappers> 
        <mapper resource="com/mybatis/mapper/RoleMapper.xml" /> 
    </mappers> 
</configuration>

ここでは、要素 <properties> の下のサブ要素 <property> 定義が使用され、データベース ユーザー名が文字列 database.username で定義され、この定義されたプロパティ パラメータを $ などのデータベース定義に導入できます。 {database.username} 。これにより、一度定義した後はどこでも参照できるようになります。ただし、属性パラメータが数百または数千ある場合、この方法を使用するのは明らかに適切な選択ではないため、現時点ではプロパティ ファイルを使用できます。

プロパティファイルの使用

プロパティ ファイルを使用することは比較的一般的な方法です。一方で、このファイルは非常にシンプルであり、そのロジックはキーと値の対応です。1 つのプロパティ ファイルに複数のキー値を設定したり、複数のキー値を配置したりできます。では、これらは許可されており、将来のメンテナンスや変更に便利です。

以下に示すように、ファイル jdbc.properties を作成し、それをクラスパスのパスに置きます。

database.driver=com.mysql.jdbc.Driverdatabase.url
=jdbc:mysql://localhost:3306/mybatisdatabase.username
=rootdatabase.password
=1128

MyBatis では、プロパティ ファイルは <properties> の属性リソースを通じて導入されます。

<properties resource="jdbc.properties"/>

${database.username} のメソッドを使用して、プロパティ ファイルのプロパティ パラメータを MyBatis 構成ファイルにインポートすることもできます。現時点では、プロパティ ファイルを保守することで構成内容を保守できます。

プログラム渡しを使用してパラメータを渡します

実際の運用環境では、データベース ユーザーのパスワードは開発者などには秘密にされます。機密を保つために、運用および保守担当者は通常、ユーザーとパスワードを暗号文に暗号化し、プロパティ ファイルで設定する必要があります。

開発者やその他の担当者は、実際のユーザーのパスワードを知らないため、暗号化された文字列を使用してデータベースに接続することは不可能であり、多くの場合、実際のユーザーとパスワードを取得するには復号化する必要があります。

ここで、システムが復号化用にそのような CodeUtils.decode(str) を提供していると仮定すると、以下に示すように、SqlSessionFactory を作成する前にユーザー名とパスワードを復号化し、復号化された文字列をプロパティ属性にリセットする必要があります。

文字列リソース = "mybatis-config.xml";
入力ストリーム inputStream;
入力ストリーム = Resources.getResourceAsStream("jdbc.properties");
プロパティ props = new Properties(); 
props.load(in);
文字列ユーザー名 = props.getProperty( "database.username"); 
String password = props.getProperty("database.password"); 
//ユーザーとパスワードを復号化し、リセットします
props.put("database.username", CodeUtils.decode(username) ); 
props. put ("database.password", CodeUtils.decode(password)); 
inputstream = Resources.getResourceAsStream(resource); 
//プログラムによって渡されたメソッドを使用して、元のプロパティ属性パラメーターを上書きします
SqlSessionFactory = new SqlSessionFactoryBuilder(). build(入力ストリーム、小道具);

まず Resources オブジェクトを使用して jdbc.properties 構成ファイルを読み取り、次に元の構成済みユーザーとパスワードを取得し、復号化してリセットし、最後に SqlSessionFactoryBuilder の build メソッドを使用して複数のプロパティ パラメーターを渡して完了します。

これにより、以前に構成された暗号文が上書きされるため、データベースに接続できるようになります。また、データベースのユーザーとパスワードのセキュリティに関する運用および保守担当者の要件も満たされます。

おすすめ

転載: blog.csdn.net/unbelievevc/article/details/132268596