mybatis properties属性

本文详细介绍了MyBatis中properties属性的应用方式,包括property子元素、properties文件及程序代码传递等三种方法,并提供了具体示例。

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

mybatis properties属性

properties属性 可以为系统配置一些运行参数,这些配置可以在xml中完成,也可以在properties文件中编写。在Mybatis中提供了三种方式让我们使用properties
1. property 子元素
2. properties文件
3. 程序代码传递

property 子元素

我们可以在properties中配置数据源信息,然后在配置环境的时候引用properties中的属性。

<properties>
        <property name="db.driver" value="com.mysql.jdbc.Driver" />
        <property name="db.url" value="jdbc:mysql://127.0.0.1:3306/ssm" />
        <property name="db.username" value="root" />
        <property name="db.password" value="root" />
    </properties>

配置数据源时候引用properties中的值。

<dataSource type="POOLED">
                <property name="driver" value="${db.driver}" />
                <property name="url" value="${db.url}" />
                <property name="username" value="${db.username}" />
                <property name="password" value="${db.password}" />
            </dataSource>

这种方式适用于属性参数不多的情况,当属性较多时建议使用properties文件。

properties文件

首先我们创建一个file,后缀名为.properties ,放到classpath路径下。

#注释
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/cy44_tx?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
mysql.username=root
mysql.password=root

在properties中的注释以#开头,其中 = 前面的为键,后面为值。
将mybatis中的properties元素中的resource属性赋值为jdbc.properties文件的路径,在数据源配置时,同property模式一样,以${ }引用键值即可。


     <properties resource="jdbc.properties"/>
     <!-- 注释中的代码和上一行代码效果一样 -->
     <!-- <properties>
        <property name="db.driver" value="com.mysql.jdbc.Driver" />
        <property name="db.url" value="jdbc:mysql://127.0.0.1:3306/ssm" />
        <property name="db.username" value="root" />
        <property name="db.password" value="root" />
    </properties> -->

也可以写成这样

<properties resource="jdbc.properties">
        <property name="db.driver" value="com.mysql.jdbc.Driver" />
        <property name="db.url" value="jdbc:mysql://127.0.0.1:3306/ssm" />
        <property name="db.username" value="root" />
        <property name="db.password" value="root" />
    </properties> 

但是property子元素已经无效,因为properties文件方式优先级高于property子元素方式。
在真实开发时,开发人员无法获取真实的数据库信息,只有被加密过的数据库信息,通过给定的解密方法进行使用,这时我们要在创建SqlSessionFactroy对象之前将数据库信息解密并重置到配置文件中。

首先,我们先模拟一个解密方法

public class CodeUtils {
    public static String decode(String code){
        System.out.println("模拟解密过程"+ code);
        return code;
    }
}

给出将要重置到配置文件的properties

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.ibatis.io.Resources;

public class SetProperties {
    public static Properties setJdbcProperties() throws IOException{
            InputStream in = Resources.getResourceAsStream("jdbc.properties");
            Properties properties = new Properties();
            properties.load(in);
            String username = properties.getProperty("mysql.username");
            String password = properties.getProperty("mysql.password");

            properties.put("mysql.username",CodeUtils.decode(username));
            properties.put("mysql.password",CodeUtils.decode(password));

            return properties;

    }
}

这个阶段主要分为获取jdbc.properties文件中加密的字段,解密后放到新的properties文件中。
然后通过SqlSessionFactoryBuilder类中的builder方法重置到jdbc.properties中同时创建我们的SqlSessionFactory对象。
这一步只需要将我们的properties文件作文参数放到以前的SqlSessionFactoryUtils类中的getSqlSessionFactory方法里面的build方法中即可。

sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,SetProperties.setJdbcProperties());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值