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


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

    此章主要介绍sqlMapConfiguragion.xml的核心配置属性。

    mybatis、mappers、Environments、ObjectFactory、typeHandlers、Properties、Settings、typeAliases、Plugins

    原链接为:https://blog.csdn.net/www1056481167/article/details/70551663

    mybatis核心

     

    MyBatis的xml配置文件包含了设置和影响MyBatis行为的属性,XML配置文件的层次饥结构如下:

    Configuration

        Properties属性

        Settings设置

        typeAliases类型别名

        typeHandlers类型处理器

        ObjectFactory对象工厂

        Plugins插件

        Environments环境

               Environment环境变量

                      transactionManager事物管理器

                      datasource数据源

        mappers映射器

    基本配置项:

    [html] view plain copy
     
     
    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. <configuration>  
    6.    …其他配置项  
    7. </configuration>  

    注意:

           MyBatis 将按照下面的顺序来加载属性:

           在  properties素体内定义的属性首先被读取。

           然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

           最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

    建议:

           不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

           在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

    Properties属性

    作用:这些是外部化的, 可替代的属性, 这些属性也可以配置在典型的 Java 属性配置文件中, 或者通过 properties 元素的子元素来传递

    [html] view plain copy
     
     
    1. <properties resource="db.properties">  
    2.     <!--properties中还可以配置一些属性名和属性值 -->  
    3.     <property name="jdbc.driver" value=""/>  
    4. </properties>  

    Settings的设置

    mybatis框架在运行时可以调整一些运行参数。

    settings是极其重要的配置, 它们会修改 MyBatis 在运行时的行为方式。

    设置选项 描述 可用值 默认值
    cacheEnabled

    全局性地启用或禁用所有在 mapper配

    置文件
    true|false true
    lazyLoadingEnabled

    全局性地启用或禁用延迟加载。当禁用

    true|false true
    aggressiveLazyLoading

    当启用后,一个有延迟加载属性的对象的任何一个延迟属性被加载时,该对象

    的所有的属性都会被加载。否则,所有 属性都是按需加载。
    true|false true
    multipleResultSetsEnabled 允许或禁止从单一的语句返回多个结果 集(需要驱动程序兼容)。 true|false true
    useColumnLabel

    使用列的标签而不是列的名称。在这方面,不同的驱动程序可能有不同的实

    现。参考驱动程序的文档或者进行测试来确定您所使用的驱动程的行为

    true|false true
    useGeneratedKeys

    允许JDBC自动生成主键。需要驱动程序兼容。如果设置为 true则会强行自

    动生成主键,然而有些则不会自动生
    true|false False
    autoMappingBehavior

    指定MyBatis是否以及如何自动将列映射到字段/属性。

    PARTIAL:只是自动映射简单、非嵌套的结果集。

    NONE,PARTIAL,

    FULL
    PARTIAL
    defaultExecutorType

    配置默认的执行器(executor)。SIMPLE:简单的执行器。

    REUSE:重用preparedstatements的执行器。

    SIMPLEREUSE

    BATCH
    SIMPLE
    defaultStatementTimeout 设置查询数据库超时时间。 任何正整数

    NotSet(null)


    注:一般情况下我们不需要特别指定,都使用的是默认值除非特殊需要自己指定状态值。

    具体配置如下

    [html] view plain copy
     
     
    1. <configuration>  
    2.     <settings>  
    3.         <setting name="cacheEnabled" value="true"/>  
    4.     </settings>  
    5. </configuration>  

    typeAliases类型别名

    定义类型别名的意义以及用途:

    在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。例如查询结果返回的是一个user对象,此处可以定义一个user bean,然后入参或者返回参数可以指定为alias的定义的别名user即可。

    1、单个定义别名

    [html] view plain copy
     
     
    1. <configuration>  
    2.     <typeAliases>  
    3.         <!-- 针对单个别名定义 type:类型的路径 alias:别名 -->  
    4.         <typeAlias type="org.mybatis.po.User" alias="user"/>  
    5.     </typeAliases>  
    6. </configuration>  

    2、批量定义别名(常用)

    [html] view plain copy
     
     
    1. <configuration>  
    2.     <typeAliases>  
    3.         <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->  
    4.         <package name="org.mybatis.po" />  
    5.     </typeAliases>  
    6. </configuration>  

    typeHandlers类型处理器

    说明:mybatis中通过typeHandlers完成jdbc类型和java类型的转换。通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义mybatis支持类型处理器

    ObjectFactory对象工厂

       MyBatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下,我们不需要配置,mybatis会调用默认实现的objectFactory。除非我们要自定义ObjectFactory的实现,那么我们才需要去手动配置。

    [java] view plain copy
     
     
    1. //   ExampleObjectFactory.java  
    2. public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) {  
    3. return super.create(type);  
    4. }  
    5. public Object create(  
    6.    
    7.   
    8. Class type,  
    9. List<Class> constructorArgTypes, List<Object> constructorArgs) {  
    10. return super.create(type, constructorArgTypes, constructorArgs);  
    11. }  
    12. public void setProperties(Properties properties) { super.setProperties(properties);  
    13. }  
    14. }  

    // MapperConfig.xml

    [html] view plain copy
     
     
    1. <objectFactory  type="org.mybatis.example.ExampleObjectFactory">  
    2.      <property name="someProperty" value="100"/>  
    3. </objectFactory>  

    ObjectFactory接口非常简单,它包含两个create的方法,一个是默认构造器,还有一个是含参数的构造器。最后的setProperties方法用来配置ObjectFactory。在初始化您自己的ObjectFactory实例之后,定义在objectFactory元素主体中的属性会以参数的形式传递给setProperties方法。

    Plugins插件

       plugins是一个可选配置。mybatis中的plugin其实就是个interceptor,它可以拦截Executor、ParameterHandler、ResultSetHandler、StatementHandler的部分方法,处理我们自己的逻辑。Executor就是真正执行sql语句的东西, ParameterHandler是处理我们传入参数的,还记得前面讲TypeHandler的时候提到过,mybatis默认帮我们实现了不少的typeHandler,当我们不显示配置typeHandler的时候,mybatis会根据参数类型自动选择合适的typeHandler执行,其实就是ParameterHandler在选择。ResultSetHandler就是处理返回结果的。

    Environments环境

    [html] view plain copy
     
     
    1. <environments default="development">    
    2.          <environment id="development">    
    3.              <transactionManager type="JDBC" />    
    4.              <!-- 配置数据库连接信息 -->    
    5.              <dataSource type="POOLED">    
    6.                  <!-- value属性值引用db.properties配置文件中配置的值 -->    
    7.                  <property name="driver" value="${driver}" />    
    8.                  <property name="url" value="${url}" />    
    9.                  <property name="username" value="${name}" />    
    10.                  <property name="password" value="${password}" />    
    11.              </dataSource>    
    12.          </environment>    
    13.      </environments>    

    mapper映射器

    第一种加载方式:通过resource加载单个映射文件

    xml配置

    [html] view plain copy
     
     
    1. <configuration>  
    2.      <mappers>  
    3.         <mapper resource="sqlmap/User.xml" />  
    4.      </mappers>  
    5. </configuration>  
    
    
    
    

    第二种加载方式:通过mapper接口加载单个mapper

    特别注意的是:通过mapper接口加载单个映射文件

    遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中

             上边规范的前提是:使用的是mapper代理方法

    配置文件

    [html] view plain copy
     
     
    1. <configuration>  
    2.     <mappers>  
    3.         <mapper class="org.mybatis.mapper.UserMapper"/>  
    4.     </mappers>  
    5. </configuration>  

    第三种加载方式:批量加载mapper(推荐使用)

      批量加载mapper指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载

    遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中

    上边规范的前提是:使用的是mapper代理方法

    [html] view plain copy
     
     
    1. <configuration>  
    2.     <mappers>  
    3.         <package name="cn.itcast.mybatis.mapper" />  
    4.     </mappers>  
    5. </configuration>   

     

    mybatis默认支持别名

    sql映射XML文件

    MyBatis真正强大之处就在这些映射语句,也就是它的魔力所在。对于它的强大功能,SQL映射文件的配置却非常简单

    •  cache–在特定的命名空间配置缓存。

    •  cache-ref  –引用另外一个命名空间配置的缓存.

    •  resultMap  – 最复杂也是最强大的元素,用来描述如何从数据库结果集里加载对象。

    •  parameterMap – 不推荐使用! 在旧的版本里使用的映射配置,这个元素在将来可能会被删除,因此不再进行描述。

    •  sql –能够被其它语句重用的SQL块。

    • insert –INSERT映射语句
    • update–UPDATE映射语句
    • delete –DELEETE映射语句
    select –SELECT映射语句 接下来的章节将会对每一个元素进行描述。

  • 相关阅读:
    第四章 分布式扩展
    第三章 2.性能压测,容量问题
    第三章 1.云部署,打包上传
    MySQL语法大全
    Python随手记
    Python操作Mysql中文乱码问题
    Python基础函数
    破解电信校园网路由限制
    ThinkPHP扩展函数的三个方法
    $_SERVERS预定义变量
  • 原文地址:https://www.cnblogs.com/zh94/p/9221225.html
Copyright © 2020-2023  润新知