在学习笔记1中大概学习了如何创建Mybatis框架的过程,其中有部分是编写核心配置文件,具体内容如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>

environments 可以配置多个不同的环境,default指向默认环境,id是默认环境的id((比如:default="development")。

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

transactionManger(事务管理器)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

  • JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
  • MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。例如:
    <transactionManager type="MANAGED"><property name="closeConnection" value="false"/>
    </transactionManager>

dataSource有三种类型

  1. UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形

  2. POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
  3. JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用

property

<properties resource="org/mybatis/example/config.properties"><property name="username" value="dev_user"/><property name="password" value="F2Fa3!33TYyg"/>
</properties>
设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:<dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/>
</dataSource>

mappers有4种方式去查找资源

<!-- 使用相对于类路径的资源引用 -->
<mappers><mapper resource="org/mybatis/builder/AuthorMapper.xml"/><mapper resource="org/mybatis/builder/BlogMapper.xml"/><mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
<!-- 使用完全限定资源定位符(URL) -->
<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/><mapper url="file:///var/mappers/BlogMapper.xml"/><mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers><mapper class="org.mybatis.builder.AuthorMapper"/><mapper class="org.mybatis.builder.BlogMapper"/><mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers><package name="org.mybatis.builder"/>
</mappers>

Mybatis学习笔记2-配置文件解析相关推荐

  1. OpenOCD学习笔记 5-stm32f0x配置文件解析

    OpenOCD的文档东西比较多,还有很多可能与DAPLink无关,所以改为分析stm32f0x.cfg文件,逐步学习每个的含义. 1. source [find target/swj-dp.tcl] ...

  2. MyBatis学习笔记(二)根据配置文件优化

    上一篇:MyBatis学习笔记(一)完整查询数据库流程+增删改查 mybatis_config.xml文件中可以包含以下部分 本文接下来的优化都是针对于mybatis_config.xml文件,并且每 ...

  3. mybatis学习笔记--常见的错误

    原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...

  4. mybatis学习笔记(1)-对原生jdbc程序中的问题总结

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...

  5. 超详细Mybatis学习笔记(可供下载)

    文章目录 1.简介 2.第一个Mybatis程序 搭建环境 编写代码 测试 3.CRUD(增删改查) 3.1.几个属性 3.2.select 3.3.insert 3.4.delete 3.5.upd ...

  6. Mybatis学习笔记【part03】增删改查

    Mybatis 学习笔记 Part03 1.传入参数与返回参数设置(查) <!-- 根据 id 查询 --> <select id="findById" resu ...

  7. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  8. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  9. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  10. MyBatis学习笔记2 ——第一个MyBatis程序

    MyBatis学习笔记2 --第一个MyBatis程序 参考教程B站狂神https://www.bilibili.com/video/BV1NE411Q7Nx 环境搭建 建立一个mybatis数据库用 ...

最新文章

  1. 实现不可变类如何禁止子类化?
  2. sql php修改mysql结构_sql怎么修改表内容
  3. 「C++: draft」一张图弄懂C++指针(*)和引用()以及深拷贝、浅拷贝
  4. 圭古文化获数百万天使轮融资 ,持续探索原创漫画IP变现
  5. selenium webdirver之rdoc使用
  6. 基于ZooKeeper实现分布式锁
  7. 人工智能实战小程序之语音_前端开发
  8. C#发送Email邮件方法总结
  9. 微服务实战(六):落地微服务架构到直销系统(事件存储)
  10. HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching
  11. 响应式布局---菜单
  12. 【JavaScript】关于delete
  13. java手动调用finalize_Java并手动执行finalize
  14. 作业要求 20180925-1 每周例行报告
  15. apache、nginx验证
  16. shell 并行执行与串行执行
  17. studio 热重载应用_使用VS Code开发Flutter应用,体验热重载技术
  18. 【论文阅读笔记】Beamforming Optimization for Wireless Network Aided by IRS with Discrete Phase Shifts
  19. TX-LCN优化介绍
  20. Android 贝塞尔曲线的魅力

热门文章

  1. [渝粤教育] 盐城工学院 材料物理性能 参考 资料
  2. PROFINET非周期数据通信详解
  3. 爬取某app的古诗文翻译注释等
  4. a4的尺寸大小转换为像素
  5. 80端口被封 php跳转,80端口打不开网站问题
  6. sketchup边线设置_草图大师SketchUp改变模型边线颜色的方法
  7. 工作拾忆 一年C++经验小记
  8. 【mysql表查询】某门课程的前三名(包含并列)
  9. CSDN 勤学会 —— 和优秀的人一起学习进步
  10. 马克思主义基本原理概论