MyBatis的组成中,主要的是SqlSessionFactory的类,这个类会动态调用SqlSession和执行SQL的声明映射。SqlSessionFactory的对象创建可以基于XML的配置或Java的API

笔者将向大家介绍MyBatis的配置文件中的配置参数,像dataSource、environment、gypeAlisea、typeHandler和SQL的映射。

从这一节开始,笔者所介绍的内容包含下面的:

1)        使用XML配置文件

2)        使用Java API的配置

3)        MyBatis的日志加载

1. 使用 XML的配置文件

创建SqlSessionFactory常用的普遍的方法就是基于XML的配置。下面有一份mybatis-config的配置文件。

<?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>
<properties resource="application.properties">
<property name="username" value="db_user"/>
<property name="password" value="verysecurepwd"/>
</properties>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="Tutor" type="com.owen.mybatis.domain.Tutor"/>
<package name="com.owen.mybatis.domain"/>
</typeAliases>
<typeHandlers>
<typeHandler handler="com.owen.mybatis.typehandlers.
PhoneTypeHandler"/>
<package name="com.owen.mybatis.typehandlers"/>
</typeHandlers>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<environment id="production">
<transactionManager type="MANAGED"/>
<dataSource type="JNDI">
<property name="data_source" value="java:comp/jdbc/MyBatisDemoDS"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/owen/mybatis/mappers/StudentMapper.xml"/>
<mapper url="file:///D:/mybatisdemo/mappers/TutorMapper.xml"/>
<mapper class="com.owen.mybatis.mappers.TutorMapper"/>
</mappers>
</configuration>

下面我们将对这些配置的信息进行探讨。

2. Environment参数

MyBatis提供了多套数据源的环境配置,以至于将应用程序部署在多样的环境中,像DEV、TEST、QA、UAT和PRODUCTION.这样,我们可以更加容易去改变默认的环境,我们只需要改变enviroment的id的值就行了。一般,我们的默认的环境配置值是development。当我们的应用部署在生产的应用程序上时,我们不需要改变太多有配置文件,仅仅只需要改变一下默认的enviroment的id值就可以。

有时候,我们在一个同样的应用程序中,我们可能需要使用多套的数据库。例如,我们需要SHOPPINGCART的数据库来储蓄订单的详细信息和我们需要database去汇报我们的目的,通过储蓄订单的详细信息。

在你的应用程序中,需要去连接多个不同的数据库,你需要分开去配置每套数据库,和分开去创建SqlSessionFactory对象对应不同的数据库。

<environments default="shoppingcart">
<environment id="shoppingcart">
<transactionManager type="MANAGED"/>
<dataSource type="JNDI">
<property name="data_source" value="java:comp/jdbc/
ShoppingcartDS"/>
</dataSource>
</environment>
<environment id="reports">
<transactionManager type="MANAGED"/>
<dataSource type="JNDI">
<property name="data_source" value="java:comp/jdbc/ReportsDS"/>
</dataSource>
</environment>
</environments>

我们可以创建SqlSessionFactory给我们的环境,如下所示:

inputStream = Resources.getResourceAsStream("mybatis-config.xml");
defaultSqlSessionFactory = new SqlSessionFactoryBuilder().
build(inputStream);
cartSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStre
am,"shoppingcart");
reportSqlSessionFactory = new SqlSessionFactoryBuilder().
build(inputStream,"reports");

当我们创建SqlSessionFactory没有明确定义environment的id时,SqlSessionFactory将会创建默认的环境。在上面的代码中,defaultSqlSessionFactory创建使用shoppingcart的环境配置。在每一个的环境中,我们需要去配置dataSource和transactionManager的参数。

3. DataSource的参数

dataSource的参数的配置,是数据库连接的属性需要的相应参数。

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

上面的代码中,我们看到了dataSource的type是“POOLED”,这个type可以是UNPOOLED、POOLED、或JNDI.

1)        如果你使用的type是UNPOOLED,MyBatis将会在第一次数据库操作的时候,开启数据库和关闭数据库。这个方法可以用于一些简单的数据库,和用户量不是很多的程序中。不过笔者不提倡使用这个方法。

2)        如果你使用的type是POOLED,MyBatis将会创建一个数据库的连接池,和数据库在操作时,只会连接数据库一次。一旦这个连接成功后,MyBatis将会返回,连接到连接池中,也就是说,以后所使用的数据是从连接池来获取的。这个方法适合使用于开发和测试的环境中。

3)        如果你使用的type是JNDI,MyBatis将会从JNDI获取连接,数据资源一般会配置在应用程序的服务上。这个方法一般会用于生产的环境中。

MyBatis的XML配置文件(一)相关推荐

  1. 解决eclipse中mybatis的xml配置文件无代码提示问题

    解决eclipse中mybatis的xml配置文件无代码提示问题 参考文章: (1)解决eclipse中mybatis的xml配置文件无代码提示问题 (2)https://www.cnblogs.co ...

  2. mybatis(二)xml配置文件详细说明

    目录 文章目录 mybatis(二)xml配置方式详细说明 2.1.使用properties配置属性 2.1.1.引入外部properties文件或在properties标签内定义属性 2.1.1.1 ...

  3. eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法

    当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...

  4. intellij idea中设置mybatis的xml配置文件的背景色

    点击这里查看 <intellij idea使用教程汇总篇> 场景:在idea中打开mybatis的配置文件××Mapper.xml,打开后黄压压的一大片,背景色是真的不太友好,如下图所示: ...

  5. Spring实现热加载MyBatis 的XML配置文件

    为什么80%的码农都做不了架构师?>>>    package com.myapp.util;import java.io.IOException; import java.lang ...

  6. 关于Mybatis的xml配置文件中使用and与or混合查询

    <!-- 该语句结合and or 来查询 是否是老年或者儿童 --><select id="selectCount" resultType="java. ...

  7. SpringBoot 精通系列-如何优雅地使用Mybatis的XML配置

    导语   首先Mybatis作为如今最为流行的ORM框架之一,那么首先需要了解的就是什么是ORM框架. 文章目录 ORM框架 为什么需要ORM这种技术呢? Mybatis简介 Mybatis的几个重要 ...

  8. mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...

    一.注解方式 pom org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.0 mysql mysql-connector-java org. ...

  9. Mybatis中SqlMapConfig.xml配置文件的使用

    文章目录 SqlMapConfig.xml中配置的内容和顺序如下 properties(属性) SqlMapConfig.xml引用如下 typeAliases(类型别名) mybatis支持别名: ...

  10. mybatis加载xml配置文件

    <build><finalName>bizcloud-tcb2b</finalName><!-- mybatis加载xml配置文件的配置 -->< ...

最新文章

  1. 【VMware vSAN 6.6】2.1.带有本地存储的服务器:vSAN硬件服务器解决方案
  2. mongoDB 数据库简介
  3. java中Collections的接口及类层次图
  4. 【c++】24.std::function和std::bind详解
  5. 一个简单的workaround - 如何使用SAP Spartacus中的private API
  6. cloud foundry_Cloud Foundry Java客户端–流事件
  7. sqoop导入/导出
  8. kotlin中文开发文档+视频教程+Android Studio 3.0下载地址
  9. Selenium 官网打不开怎么办?
  10. CSS DIV 折角的代码
  11. 几种常见的十进制代码(笔记)
  12. Python玩转图像格式转换
  13. Nginx 负载均衡演示之 upstream 参数、 location 参数等示例说明
  14. Github年度最强Python库排行榜出炉
  15. TP-link WR703N, OpenWrt, Mentohust
  16. Flex富文本编辑器
  17. (C语言)对称数判断
  18. 中兴c300业务板_中兴OLT C300板卡添加
  19. Spring Boot 之 MDC 实现全链路调用日志跟踪
  20. 【ECCV2022】OSFormer: One-Stage Camouflaged Instance Segmentation with Transformers

热门文章

  1. java文件下载和导出文件名乱码浏览器兼容性问题
  2. 基于visual Studio2013解决面试题之0707最小元素
  3. C++网络编程实例2(socket)
  4. Linux 命令执行流程
  5. shell 第六次作业(grep正则、sed)
  6. 多种方法实现二叉树的先序、中序、后序、层序遍历
  7. restfulframework引用多对多外键
  8. editplus怎么在前后插入字符
  9. 检查服务产生的core文件并做短信处理(shell)
  10. ecshop商品下面显示销售量