码迷,mamicode.com
首页 > 其他好文 > 详细

04.配置解析

时间:2020-05-22 10:12:44      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:res   mybatis   事务   指定   作用   ssi   com   文件包含   java类   

04.配置解析
核心配置文件

配置mybatis-config.xml

MyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息,xml文件标签要按照以下顺序排列

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

environments元素定义了如何配置环境,MyBatis可以配置多种环境

注:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境

MyBatis中有两种类型的事务管理器:type="[JDBC|MANAGED]"

MyBatis中有三种内建的数据源类型:type="[UNPOOLED|POOLED|JNDI]"

MyBatis默认的事务管理器是:JDBC,默认的数据源类型是:POOLED

属性(properties)

属性可以在外部配置,并进行动态替换

可以在 Java 属性文件中配置属性,也可以在properties元素的子元素中配置

加载顺序:

  • 首先读取在properties元素体内指定的属性
  • 然后根据properties元素中的resource属性读取类路径下属性文件,或根据url属性指定的路径读取属性文件,并覆盖之前读取过的同名属性
  • 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性

通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties元素中指定的属性

类型别名(typeAliases)

类型别名:

  1. 可为Java类型设置一个缩写名字,仅用于XML配置

    <typeAliases>
        <!--给类设置别名-->
        <typeAlias type="com.believe.pojo.User" alias="user" />
    </typeAliases>
    
  2. 可以指定一个包名,MyBatis会在包名下面搜索需要的Java Bean,在包中的Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名,若有注解,则别名为其注解值

    <typeAliases>
        <!--指定包路径-->
        <package name="com.believe.pojo"/>
    </typeAliases>
    
    //注解
    @Alias("pojo")
    public class User {}
    

作用:降低冗余的全限定类名书写

设置(settings)

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

其他设置
  1. typeHandlers(类型处理器)
  2. objectFactory(对象工厂)
  3. plugins(插件)
mappers(映射器)

error:MapperRegistry,没有注册绑定Mapper文件

方式一:(推荐使用)

<!--使用相对于类路径的资源引用-->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>

方式二:

<!--使用完全限定资源定位符(URL)-->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>

方式三:(不建议使用)

<!--使用映射器接口实现类的完全限定类名-->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>

注:

  1. 接口和Mapper配置文件必须同名
  2. 接口和Mapper配置文件必须在同一包下

方式四:

<!--将包内的映射器接口实现全部注册为映射器-->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

注:

  1. 接口和Mapper配置文件必须同名
  2. 接口和Mapper配置文件必须在同一包下

注:每一个Mapper.xml都需要在mybatis核心配置文件注册

生命周期

作用域、生命周期是至关重要的,因为错误的使用会导致严重的并发问题

  1. SqlSessionFactoryBuilder

    SqlSessionFactoryBuilder实例的最佳作用域是方法作用域(也就是局部方法变量)

    一旦创建了SqlSessionFactory,就不再需要它了

  2. SqlSessionFactory

    SqlSessionFactory的最佳作用域是应用作用域

    一旦被创建就应该在应用的运行期间一直存在

  3. SqlSession

    SqlSession的最佳的作用域是请求或方法作用域

    每个线程都应该有它自己的SqlSession实例

    SqlSession的实例不是线程安全的,因此是不能被共享的

04.配置解析

标签:res   mybatis   事务   指定   作用   ssi   com   文件包含   java类   

原文地址:https://www.cnblogs.com/thetree/p/04_mybatis.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!