Mybatis全局配置文件小结

这篇文章讲述的是Mybatis配置文件小结,如有错误或者不当之处,还望各位大神批评指正。

mybatis-config.xml

1. properties(取出外部配置文件)

属性:
1. resource:引入类路径下的资源
2. url:引入网络或磁盘路径下的资源

例:配置数据库时将写到dbconfig.properties文件中

driver = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@localhost:1521:orcl
username = scott
password = tiger

然后在配置文件中配置(使用${ }连接外部值)

<dataSource type="POOLED"> 
    <!--驱动器 -->      
    <property name="driver" value="${driver}"/>        
    <!-- 数据库实例地址 -->
    <property name="url" value="${url}"/>        
    <!-- 用户名 -->
    <property name="username" value="${username}"/>        
    <!-- 密码 -->
    <property name="password" value="${password}"/>      
</dataSource> 

settings(Mybatis配置属性)

参考配置文档

参数 描述 有效值 默认值
cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关。 true,false true
lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 true,false false
aggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。 true,false true
multipleResultSetsEnabled 是否允许单一语句返回多结果集(需要兼容驱动)。 true,false true
useColumnLabel 使用列标签代替列名。。 true,false true
useGeneratedKeys 允许 JDBC 支持自动生成主键,需要驱动兼容。 true,false false
true,false true
autoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。 NONE, PARTIAL, FULL PARTIAL
defaultExecutorType 配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。 SIMPLE REUSE BATCH SIMPLE
defaultStatementTimeout 设置超时时间,它决定驱动等待数据库响应的秒数。 Any positive integere Not Set (null)
safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。 true,false false
mapUnderscoreToCamelCase 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 true,false false
localCacheScope MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。 SESSION,STATEMENT SESSION
jdbcTypeForNull 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHER
lazyLoadTriggerMethods 指定哪个对象的方法触发一次延迟加载 A method name list separated by commas equals,clone,hashCode,toString
defaultScriptingLanguage 指定动态 SQL 生成的默认语言。 A type alias or fully qualified class name. org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver
callSettersOnNulls 指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的。 true,false false
logPrefix 指定 MyBatis 增加到日志名称的前缀。 Any String Not set
logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 SLF4J,LOG4J,LOG4J2,JDK_LOGGING,COMMONS_LOGGING,STDOUT_LOGGING,NO_LOGGING Not set
proxyFactory 指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具。 CGLIB JAVASSIST CGLIB

typeAliases(给类名称起别名)

<!-- typeAliases起别名 -->
<typeAliases>

    <!-- 要起别名的全类名,默认为类名小写 -->
    <typeAlias alias="STD" type="com/cn/cmc/bean/Student.java"/>
    <!-- 包别名,默认为类名,不区分大小写 -->
    <package name="com.cn.cmc.bean"/>
</typeAliases>

<!-- 引用时 -->
<select id="getStudentById" resultType="STD"> 
   select* from Student where id= #{id}  
</select>

typeHandlers(类型处理器)

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。

<typeHandlers>
  <typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>

注:后续会详解

plugin(插件)

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

注:后续会继续讲解四大对象

environments(配置环境)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射。许多类似的用例。

相关标签

environment
默认的环境 ID(比如:default=”development”或”test”)

这里写代码片

transactionManager事务管理器

  • type:事物管理器类型(JDBC,MANAGED)
    1. JDBC :这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围
    2. MANAGED :这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。

dataSource 数据源

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

mappers(映射器)

告诉 MyBatis 到哪里去找到这些SQL语句

<mappers>    
   <!-- 
    将mapper注册到配置文件
    resource:引用类路径下的SQL映射文件
    url:引用网络或者本地磁盘上的SQL映射文件
    class:引用接口
    -->
   <mapper resource="com/cn/cmc/bean/StudentMapper.xml"/>  
   //批量注册
   <package name="com.cn.cmc.bean"/>
</mappers> 

databaseIdProvider

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。

<databaseIdProvider type="DB_VENDOR">
  <property name="SQL Server" value="sqlserver"/>
  <property name="DB2" value="db2"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

然后在mapper里配置providerId即可

特别注意

以上顺序不可颠倒,否则报错

猜你喜欢

转载自blog.csdn.net/u013634252/article/details/80765800