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

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即可

特别注意

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值