MyBatis配置文件(一)――properties属性

MyBatis配置文件中有很多配置项,这些配置项分别代表什么,有什么作用,需要理一下了。先通过下面这个例子来看都有哪些配置项

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <!-- mybatis的基本配置文件:主要配置基本的上下文参数和运行环境 -->
 6 <configuration>
 7     <!--配置-->
 8     <properties></properties>
 9     <!--设置 -->
10     <settings></settings>
11     <!--类型命名 -->
12     <!--别名:pojo对象的别名 -->
13     <typeAliases>
14         <typeAlias alias="user" type="com.daily.pojo.User"></typeAlias>
15         <typeAlias alias="product" type="com.daily.pojo.Product"></typeAlias>
16     </typeAliases>
17     <!--类型处理器 -->
18     <typeHandlers></typeHandlers>
19     <!--对象工厂 -->
20     <objectFactory></objectFactory>
21     <!--插件 -->
22     <plugins></plugins>
23     <!-- 环境模式:development开发模式 work工作模式 -->
24     <environments default="development">
25         <!--环境变量 -->
26         <environment id="development">
27             <!--事务管理器 -->
28             <transactionManager type="JDBC" />
29             <!--数据源 -->
30             <dataSource type="POOLED">
31                 <property name="driver" value="${db.driver}" />
32                 <property name="url" value="${db.url}" />
33                 <property name="username" value="${db.username}" />
34                 <property name="password" value="${db.pwd}" />
35             </dataSource>
36         </environment>
37     </environments>
38     <!--数据库厂商标示 -->
39     <databaseIdProvider></databaseIdProvider>
40     <!-- 映射器 -->
41     <mappers>
42         <mapper resource="com/daily/mapper/UserMapper.xml" />
43         <mapper resource="com/daily/mapper/ProductMapper.xml" />
44     </mappers>
45 </configuration>

以上就是所有的配置项,需要注意的是配置项的顺序不能颠倒,如果颠倒了它们的顺序,在MyBatis的自启动阶段会发生异常,导致程序无法运行。我会一个一个配置地做一下分析和记录,为了避免文章太长导致日后复习或别人阅读时产生疲劳,我决定一个配置项分一篇的方式进行记录。今天先分析一下第一个配置项properties。

首先properties的使用方式有三种:

1??property子元素:就是在properties属性中增加子属性property,从而设置一些配置的key-value;

2??properties文件:就是直接使用properties引入外部配置文件,相当于将子属性抽取成一个独立的外部文件引入;

3??程序代码传递参数:就是通过代码的方式设置该配置相关的信息,如数据库配置文件中的用户名和密码一般是密文,但是连接数据库时需要对配置进行解密,此时就只能通过程序代码的方式配置了;

下面以数据库配置为例,来实现这三种不同的配置方式:

??注意:因为是单独介绍,所以这里显示properties的配置,不显示其他配置项

一、property子元素

1 <properties>
2     <property name="db.driver" value="org.postgresql.Driver"></property>
3     <property name="db.url" value="jdbc:postgresql://localhost:5433/postgres"></property>
4     <property name="db.username" value="postgres"></property>
5     <property name="db.pwd" value="postgres"></property>
6 </properties>

这种配置方式的缺点是,如果配置项很多,那么就会让配置文件显得很庞大,为了解决这个缺点,我们可以使用下面的配置方式??

二、properties文件

首先将上述配置中的所有property属性提取到一个叫做db.properties的配置文件中,如下图所示:

1 #postgresql
2 db.driver=org.postgresql.Driver
3 db.url=jdbc:postgresql://localhost:5433/postgres
4 db.username=cG9zdGdyZXM=
5 db.pwd=aHljMTIz

然后将该文件引入MyBatis配置文件

1 <properties resource="db.properties" />

这样就相当于将db.properties中的所有配置都加载到MyBatis的配置文件中了,但是这种使用方式也存在它的缺点,当外部配置文件中的值需要加密时,如连接数据库的用户名和密码,无法在配置文件中进行解密,所以只能通过程序代码传递的方式,就是要介绍的第三种,如下??

三、程序代码方式传递参数

其实这种方式一般会和第二种配合使用,作用对特殊配置进行覆盖或重写,以上面的db.properties为例,在使用到数据库配置信息时对配置中的用户名和密码进行解密。这里举个MyBatis中获取SqlSessionFactory的例子:

 1 public static SqlSessionFactory getSqlSessionFactoryByXml() {
 2         synchronized (Lock) {
 3             if (null != sqlSessionFactory) {
 4                 return sqlSessionFactory;
 5             }
 6             String resource = "mybatis-config.xml";
 7             InputStream inputStream;
 8             InputStream is = null;
 9             try {
10                 // 加载数据库配置文件
11                 is = Resources.getResourceAsStream("db.properties");
12                 Properties properties = new Properties();
13                 properties.load(is);
14
15                 // 获取加密信息
16                 String userName = properties.getProperty("db.username");
17                 String pwd = properties.getProperty("db.pwd");
18
19                 // 解密用户名和密码,并重置属性
20                 properties.setProperty("db.username", CyperTool.decodeByBase64(userName));
21                 properties.setProperty("db.pwd", CyperTool.decodeByBase64(pwd));
22                 // 读取mybatis配置文件
23                 inputStream = Resources.getResourceAsStream(resource);
24                 // 通过SqlSessionFactoryBuilder类的builder方法进行构建,并使用程序传递的方式覆盖原有属性
25                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, properties);
26             } catch (IOException e) {
27                 e.printStackTrace();
28                 return null;
29             }
30             return sqlSessionFactory;
31         }
32     }

上面的代码中:

1??11~13行是加载数据库配置文件

2??16、17行是获取加密配置

3??20、21行是解密数据并重新设置到配置文件中

4??25行通过传递配置文件完成重写

以上就是properties属性的所有内容,一般来说如果不加密,会使用第二种方式,这样降低维护的耦合性,如果有加密信息,则使用第三种。

原文地址:https://www.cnblogs.com/hellowhy/p/9664908.html

时间: 2024-08-19 08:26:16

MyBatis配置文件(一)――properties属性的相关文章

MyBatis配置文件之properties属性

MyBatis提供3个方式使用properties: 1.property子元素. 2.properties文件. 3.程序代码传递. properties属性系给系统配置一些运行参数,一般放在XML文件或者properties文件,这样可以更好方便参数修改. 文件名为:mybatis_config.xml.看一下properties属性与property使用方式. <?xml version="1.0" encoding="UTF-8" ?> <

Spring/Maven/MyBatis配置文件结合properties文件使用

使用properties文件也叫注入,比如把一些常用的配置项写入到这个文件,然后在Spring的XML配置文件中使用EL表达式去获取. 这种方式不只Spring可以使用,同样MyBatis也可以使用,只不过加载的方式不一样,但是获取值同样是EL表达式.具体的参考官方文档. properties语法参考:https://zh.wikipedia.org/wiki/.properties,注意转移字符. Spring: 本次使用的例子来自这章http://www.cnblogs.com/EasonJ

mybatis配置文件(properties、typeAliases、mappers( resource、class、url、package))

1.properties:读取文件信息 (1)jdbc配置文件: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/stu_mangement jdbc.username=root jdbc.password=root (2)核心配置文件: 指定jdbc文件的位置: <properties resource="jdbc.properties"/> 读取文件内容: <dataSo

【spring boot】配置文件 application.properties 属性解析

1.JPA命名策略 spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy 有两种值可以配置分别为: 第一:org.hibernate.cfg.DefaultNamingStrategy 第二:org.hibernate.cfg.ImprovedNamingStrategy DefaultNamingStrategy这个直接映射,不会做过多的处理(前提没有设置@Table,@Column等属性的

Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)

Mybatis(1.核心配置文件.Properties.Settings.typeAliases...) 2017年04月23日 22:52:36 阅读数:1527 此章主要介绍sqlMapConfiguragion.xml的核心配置属性. mybatis.mappers.Environments.ObjectFactory.typeHandlers.Properties.Settings.typeAliases.Plugins 原链接为:https://blog.csdn.net/www105

【原创】mybatis配置文件报错:The content of element type &quot;configuration&quot; must match &quot;(properties&gt;settings&gt;typeAliases&gt;typeHa...

最近使用mybatis,在mybatis的xml配置文件中总是会提示错误 The content of element type "configuration" must match "(properties>settings>typeAliases>typeHandlers>objectFactory>objectWrapperFactory>plugins>environments>mappers?)". 后来发现

使用枚举单例实现Xml、properties属性配置文件的操作

上一篇文章,介绍了java中四种单例设计模式:其中,可以使用枚举类型方式实现单例设计模式,但是实现的例子比较简单,本文将通过枚举单例,实现如何同时读取xml.properties属性配置文件.在回味枚举单例的使用同时,介绍一些属性配置文件的使用方式. 1.代码实现 package com.prop.io; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; impo

mybatis学习(三)----优化Mybatis配置文件中的配置

一.把连接数据库的配置单独放在一个properties文件中 前面我们是把数据库的连接信息放在了mybatis-config.xml中,如下: 1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/myb

MyBatis 配置文件基本结构

一.MyBatis 配置文件基本结构 在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解.一个完全的mybatis配置文件结构如下: [html] view plain copy <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/