mybatis_4配置解析

四、配置解析

一、核心配置文件

  • mybatis-config.xmlhtml

  • MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。java

    configuration(配置)
    properties(属性)
    settings(设置)
    typeAliases(类型别名)
    typeHandlers(类型处理器)
    objectFactory(对象工厂)
    plugins(插件)
    environments(环境配置)
    environment(环境变量)
    transactionManager(事务管理器)
    dataSource(数据源)
    databaseIdProvider(数据库厂商标识)
    mappers(映射器)

二、环境配置(environments)

MyBatis 能够配置成适应多种环境mysql

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

学会使用配置多套运行环境!数据库

Mybatis默认的事务管理器就是 JDBC , 链接池 : POOLED安全

事务管理器(transactionManager)服务器

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

JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源得到的链接来管理事务做用域。
MANAGED – 这个配置几乎没作什么。它从不提交或回滚一个链接,而是让容器来管理事务的整个生命周期(好比 JEE 应用服务器的上下文)。 默认状况下它会关闭链接。
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")并发

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭链接。app

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 链接对象组织起来,避免了建立新的链接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求

JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器能够集中或在外部配置数据源,而后放置一个 JNDI 上下文的数据源引用

三、属性(properties)

咱们能够经过properties属性来实现引用配置文件

这些属性都是可外部配置且可动态替换的,既能够在典型的 Java 属性文件中配置,亦可经过 properties 元素的子元素来传递。【db.properties】

编写一个配置文件

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=tashuo955

在核心配置文件中引入

<!--引入外部配置文件-->
    <properties resource="db.properties">
        <property name="username" value="root"/>
        <property name="pwd" value="11111"/>
    </properties>
  • 能够直接引入外部文件
  • 能够在其中增长一些属性配置
  • 若是两个文件有同一个字段,数据的引用优先使用外部properties文件的信息==先读取property内部的而后外部资源会覆盖已有属性

四、类型别名(typeAliases)

  • 类型别名是为 Java 类型设置一个短的名字。
  • 存在的意义仅在于用来减小类彻底限定名的冗余。
<!--能够给实体类起别名-->
    <typeAliases>
        <typeAlias type="com.loading.pojo.User" alias="User"/>
    </typeAliases>

也能够指定一个包名,MyBatis 会在包名下面搜索须要的 Java Bean,好比:

扫描实体类的包,它的默认别名就为这个类的 类名,首字母小写!

<!--能够给实体类起别名-->
<typeAliases>
    <package name="com.loading.pojo"/>
</typeAliases>

在实体类比较少的时候,使用第一种方式。

若是实体类十分多,建议使用第二种。

第一种能够DIY别名,第二种则·不行·,若是非要改,须要在实体上增长注解

@Alias("user")
public class User {}

五、设置

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

六、其余配置

七、映射器(mappers)

MapperRegistry:注册绑定咱们的Mapper文件;

方式一: 【推荐使用】

<!--每个Mapper.XML都须要在Mybatis核心配置文件中注册!-->
<mappers>
    <mapper resource="com/loading/dao/UserMapper.xml"/>
</mappers>

方式二:使用class文件绑定注册

<!--每个Mapper.XML都须要在Mybatis核心配置文件中注册!-->
<mappers>
    <mapper class="com.loading.dao.UserMapper"/>
</mappers>

注意点:

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!

方式三:使用扫描包进行注入绑定

<!--每个Mapper.XML都须要在Mybatis核心配置文件中注册!-->
<mappers>
    <package name="com.loading.dao"/>
</mappers>

注意点:

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!

八、生命周期和做用域

生命周期,和做用域,是相当重要的,由于错误的使用会致使很是严重的并发问题

SqlSessionFactoryBuilder:

  • 一旦建立了 SqlSessionFactory,就再也不须要它了
  • 局部变量

SqlSessionFactory:

  • 说白了就是能够想象为 :数据库链接池
  • SqlSessionFactory 一旦被建立就应该在应用的运行期间一直存在,没有任何理由丢弃它或从新建立另外一个实例。
  • 所以 SqlSessionFactory 的最佳做用域是应用做用域。
  • 最简单的就是使用单例模式或者静态单例模式。

SqlSession

  • 链接到链接池的一个请求!
  • SqlSession 的实例不是线程安全的,所以是不能被共享的,因此它的最佳的做用域是请求或方法做用域。
  • 用完以后须要赶忙关闭,不然资源被占用!

这里面的每个Mapper,就表明一个具体的业务!

相关文章
相关标签/搜索