mybatis properties属性

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());
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1 Mybatis入门 1 1.1 单独使用jdbc编程问题总结 1 1.1.1 jdbc程序 1 1.1.2 jdbc编程步骤: 2 1.1.3 jdbc问题总结如下: 3 1.2 MyBatis介绍 3 1.3 Mybatis架构 3 1.4 mybatis下载 4 1.5 创建mysql数据库 5 1.6 Mybatis入门程序 5 1.6.1 需求 5 1.6.2 第一步:创建java工程 6 1.6.3 第二步:加入jar包 6 1.6.4 第三步:log4j.properties 6 1.6.5 第四步:SqlMapConfig.xml 6 1.6.6 第五步:po类 7 1.6.7 第六步:程序编写 8 1.6.8 Mybatis解决jdbc编程的问题 15 1.6.9 与hibernate不同 16 2 Dao开发方法 16 2.1 需求 16 2.2 SqlSession的使用范围 17 2.2.1 SqlSessionFactoryBuilder 17 2.2.2 SqlSessionFactory 17 2.2.3 SqlSession 17 2.3 原始Dao开发方式 18 2.3.1 映射文件 18 2.3.2 Dao接口 19 2.3.3 问题 20 2.4 Mapper动态代理方式 20 2.4.1 实现原理 20 2.4.2 Mapper.xml(映射文件) 20 2.4.3 Mapper.java(接口文件) 21 2.4.4 加载UserMapper.xml文件 22 2.4.5 测试 22 2.4.6 总结 23 3 SqlMapConfig.xml配置文件 24 3.1 配置内容 24 3.2 properties属性) 24 3.3 settings(配置) 25 3.4 typeAliases(类型别名) 26 3.4.1 mybatis支持别名: 26 3.4.2 自定义别名: 27 3.5 typeHandlers(类型处理器) 27 3.6 mappers(映射器) 28 3.6.1 <mapper resource=" " /> 28 3.6.2 <mapper url=" " /> 28 3.6.3 <mapper class=" " /> 29 3.6.4 <package name=""/> 29 4 Mapper.xml映射文件 29 4.1 parameterType(输入类型) 29 4.1.1 #{}与${} 29 4.1.2 传递简单类型 30 4.1.3 传递pojo对象 30 4.1.4 传递pojo包装对象 31 4.1.5 传递hashmap 32 4.2 resultType(输出类型) 33 4.2.1 输出简单类型 33 4.2.2 输出pojo对象 34 4.2.3 输出pojo列表 34 4.2.4 resultType总结: 35 4.2.5 输出hashmap 35 4.3 resultMap 36 4.3.1 Mapper.xml定义 36 4.3.2 定义resultMap 36 4.3.3 Mapper接口定义 37 4.4 动态sql(重点) 37 4.4.1 If 37 4.4.2 Where 38 4.4.3 foreach 38 4.4.4 Sql片段 43 5 关联查询 44 5.1 商品订单数据模型 45 5.2 一对一查询 45 5.2.1 方法一: 46 5.2.2 方法二: 48 5.3 一对多查询 50 5.3.1 Sql语句: 50 5.3.2 定义po类 50 5.3.3 Mapper.xml 51 5.3.4 定义resultMap 51 5.3.5 Mapper接口: 52 5.3.6 测试: 52 5.3.7 小结 53 5.4 多对多查询 53 5.4.1 查询用户购买的商品信息 53 5.4.2 小结 55 5.5 resultMap小结 55 5.6 延迟加载 56 5.6.1 打开延迟加载开关 56 5.6.2 一对一查询延迟加载 56 5.6.3 一对多延迟加载 59 5.6.4 延迟加载小结 59 6 查询缓存 59 6.1 mybatis缓存介绍 59 6.2 一级缓存 60 6.2.1 原理 60 6.2.2 测试1 61 6.2.3 测试2 61 6.3 二级缓存 62 6.3.1 原理 62 6.3.2 开启二级缓存: 62 6.3.3 实现序列化 63 6.3.4 测试 63 6.3.5 禁用二级缓存 63 6.3.6 刷新缓存 64 6.3.7 Mybatis Cache参数 64 6.3.8 mybatis整合ehcache 64 6.3.9 应用场景 67 6.3.10 局限性 67 7 与spring整合 68 7.1 mybatis与spring整合jar 68 7.2 Mybatis配置文件 68 7.3 Spring配置文件: 69 7.4 Mapper编写的三种方法 70 7.4.1 Dao接口实现类继承SqlSessionDaoSupport 70 7.4.2 使用org.mybatis.spring.mapper.MapperFactoryBean 71 7.4.3 使用mapper扫描器 71 8 Mybatis逆向工程 72 8.1 第一步:mapper生成配置文件: 72 8.2 第二步:使用java类生成mapper文件: 72 8.3 第三步:拷贝生成的mapper文件到工程中指定的目录中 73 8.3.1 Mapper.xml 73 8.3.2 Mapper.java 73 8.3.3 第四步Mapper接口测试 73 8.4 逆向工程注意事项 74 8.4.1 Mapper文件内容不覆盖而是追加 74 8.4.2 Table schema问题 74

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值