这篇文章学习的是mybatis的主配置文件Configuration.xml,这个配置文件主要配置一些全局的属性,如数据库的连接,类的别名,不同的

场景运行不同的配置等等。

一、Configuration.xml中可以配置的所有内容

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

二、Properties标签

可以用来引用外部的属性文件进行配置,比如所有的配置都在一个eas.properties中配置,只需要在properties中配置一次,就可以做到一次配置到处引用。

如现在配置一个eas.properties

[plain] view plaincopyprint?
  1. #db config
  2. db.driver:com.sybase.jdbc3.jdbc.SybDriver
  3. db.url:jdbc:sybase:Tds:192.168.2.143:2678/SMM_win2k8_portal
  4. db.username:dba
  5. db.password:smmsql
  6. #server config
  7. server.url:http://192.168.2.101:8080/EAS

#db config db.driver:com.sybase.jdbc3.jdbc.SybDriver db.url:jdbc:sybase:Tds:192.168.2.143:2678/SMM_win2k8_portal db.username:dba db.password:smmsql #server config server.url:http://192.168.2.101:8080/EAS
在configuration.xml中对属性文件中的值进行引用

[html] view plaincopyprint?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <propertiesresource="eas.properties"/>
  6. <environmentsdefault="development">
  7. <environmentid="development">
  8. <transactionManagertype="JDBC"/>
  9. <dataSourcetype="POOLED">
  10. <propertyname="driver"value="${db.driver}"/>
  11. <propertyname="url"value="${db.url}"/>
  12. <propertyname="username"value="${db.username}"/>
  13. <propertyname="password"value="${db.password}"/>
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. </configuration>

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="eas.properties" /> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments> </configuration>

三、Setteing标签,对mybatis的一些行为进行设置

配置

<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="enhancementEnabled" value="false"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25000"/>
< /settings>

四、typeAliases 为一类设置别名,方便书写

[html] view plaincopyprint?
  1. <typeAliases>
  2. <!-- simple alias for full class name -->
  3. <typeAliasalias="App"type="com.justsy.eas.domain.App"/>
  4. <typeAliasalias="Content"type="com.justsy.eas.domain.Content"/>
  5. <typeAliasalias="AppDevice"type="com.justsy.eas.domain.AppDevice"/>
  6. <typeAliasalias="ListApp"type="com.justsy.eas.http.domain.ListApp"/>
  7. <typeAliasalias="ClientApp"type="com.justsy.eas.http.domain.ClientApp"/>
  8. </typeAliases>

<typeAliases> <!-- simple alias for full class name --> <typeAlias alias="App" type="com.justsy.eas.domain.App"/> <typeAlias alias="Content" type="com.justsy.eas.domain.Content"/> <typeAlias alias="AppDevice" type="com.justsy.eas.domain.AppDevice"/> <typeAlias alias="ListApp" type="com.justsy.eas.http.domain.ListApp"/> <typeAlias alias="ClientApp" type="com.justsy.eas.http.domain.ClientApp"/> </typeAliases>
java 中一些简单类型的别名

别名  映射的类型
_byte  byte
_long  long
_short  short
_int   int 
_integer   int 
_double  double
_float   float 
_boolean  boolean
string  String
byte  Byte
long  Long
short  Short
int   Integer
integer   Integer
double  Double
float   Float 
boolean  Boolean
date  Date
decimal  BigDecimal
bigdecimal  BigDecimal
object  Object
map  Map
hashmap  HashMap
list  List 
arraylist  ArrayList
collection  Collection
iterator  Iterator

五、typeHandlers 的作用是将Java类型与数据库中类型进行匹配,在statement设值和ResultSet检索值时可以正确的转换,可以实现TypeHandler接口实现自己的类型处理器。mybatis中内建的类型处理器(Type Handler )

六、ObjectFactory    每次创建新的结果对象是调用这个ObjectFactory的对象来进行创建,它会比直接调用构造函数创建对象做更多的工作

七、plugins主要用来实现拦截器的功能,使用到了动态代理,可以指定在某些操作时执行一些拦截操作,比如在一条记录插入数据库之前写入一条日志,或查询一下

权限等等

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

[java] view plaincopyprint?
  1. // ExamplePlugin.java
  2. @Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
  3. publicclass ExamplePlugin implements Interceptor {
  4. public Object intercept(Invocation invocation) throws Throwable {
  5. return invocation.proceed();
  6. }
  7. public Object plugin(Object target) {
  8. return Plugin.wrap(target, this);
  9. }
  10. publicvoid setProperties(Properties properties) {
  11. }
  12. }

// ExamplePlugin.java @Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) }) public class ExamplePlugin implements Interceptor { public Object intercept(Invocation invocation) throws Throwable { return invocation.proceed(); } public Object plugin(Object target) { return Plugin.wrap(target, this); } public void setProperties(Properties properties) { } }

[html] view plaincopyprint?
  1. <plugins>
  2. <plugininterceptor="org.mybatis.example.ExamplePlugin">
  3. <propertyname="someProperty"value="100"/>
  4. </plugin>
  5. </plugins>

<plugins> <plugin interceptor="org.mybatis.example.ExamplePlugin"> <property name="someProperty" value="100"/> </plugin> </plugins>
就会在所有执行update动作之前进行拦截,执行ExamplePlugin中自定义的一些逻辑

对select进行拦截的plugin

[java] view plaincopyprint?
  1. import org.apache.ibatis.session.ResultHandler;
  2. import org.apache.ibatis.session.RowBounds;
  3. @Intercepts({ @Signature(args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class }, method = "query", type = Executor.class) })
  4. publicclass LogInterceptor implements Interceptor {
  5. int index;
  6. @Override
  7. public Object intercept(Invocation invocation) throws Throwable {
  8. System.out.println("some log!!!");
  9. return invocation.proceed();
  10. }
  11. @Override
  12. public Object plugin(Object target) {
  13. System.out.println("1223--------------" + (index++));
  14. return Plugin.wrap(target, this);
  15. }
  16. @Override
  17. publicvoid setProperties(Properties properties) {
  18. }
  19. }

import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; @Intercepts({ @Signature(args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class }, method = "query", type = Executor.class) }) public class LogInterceptor implements Interceptor { int index; @Override public Object intercept(Invocation invocation) throws Throwable { System.out.println("some log!!!"); return invocation.proceed(); } @Override public Object plugin(Object target) { System.out.println("1223--------------" + (index++)); return Plugin.wrap(target, this); } @Override public void setProperties(Properties properties) { } }

[html] view plaincopyprint?
  1. <plugins>
  2. <plugininterceptor="com.akwolf.interceptor.LogInterceptor">
  3. </plugin>
  4. </plugins>

<plugins> <plugin interceptor="com.akwolf.interceptor.LogInterceptor"> </plugin> </plugins>

八、environments 对于一个应用可能连接多个数据库,那就需要配置不同的环境来连接不同的数据库,每一个SqlSessionFactory对应一个environments

也可以设置不同的环境应用于开发或测试的环境

如果环境被忽略,那么默认环境将会被加载,也就是default="development"的作用了

九、transactionManager设置事物的管理类型是 type=”[JDBC|MANAGED]”

JDBC使用datasource的连接来管理事物范围。

MANAGED自己不进行事物的提交和回滚,依靠容器来管理事物,设置closeConnection为false,取消自动关闭连接

[html] view plaincopyprint?
  1. <transactionManagertype="MANAGED">
  2. <propertyname="closeConnection"value="false"/>
  3. </transactionManager>

<transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager>
十、dataSource设置数据源[UNPOOLED|POOLED|JNDI]

POOLED:每次被请求时简单打开和关闭连接

POOLED:JDBC 连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。

poolMaximumActiveConnections –  在任意时间存在的活动(也就是正在使用)连接的数量。默认值:10

poolMaximumIdleConnections –  任意时间存在的空闲连接数。

oolMaximumCheckoutTime –  在被强制返回之前,池中连接被检查的时间。默认值:20000 毫秒(也就是 20 秒)

poolTimeToWait  –  这是给连接池一个打印日志状态机会的低层次设置,还有重新尝试获得连接,这些情况下往往需要很长时间(为了避免连接池没有配置时静默失败)。 默认值:20000 毫秒(也就是 20 秒)

poolPingQuery –  发送到数据的侦测查询,用来验证连接是否正常工作,并且准备接受请求。默认是“NO PING QUERY SET”,这会引起许多数据库驱动连接由一个错误信 息而导致失败。

poolPingEnabled  –  这是开启或禁用侦测查询。如果开启,你必须用一个合法的SQL语句(最好是很快速的)设置 poolPingQuery 属性。默认值:false。

poolPingConnectionsNotUsedFor  –  这是用来配置 poolPingQuery 多次时间被用一次。这可以被设置匹配标准的数据库连接超时时间,来避免不必要的侦测。默认值:0 (也就是所有连接每一时刻都被侦测-但仅仅当 poolPingEnabled 为 true 时适用)。

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

initial_context  –  这个属性用来从初始上下文中寻找环境(也就是initialContext.lookup(init ial——context))。这是个可选属性,如果被忽略,那么data_source 属性将 会直接以 init ialContext 为背景再次寻找。

data_source  –  这是引用数据源实例位置的上下文的路径。它会以由 init ial_context查询返回的环境为背景来查找,如果 init ial_context 没有返回结果时,直接以初始上下 文为环境来查找。

十一、mappers用来注册映射文件。

转载于:https://www.cnblogs.com/LLLONG/archive/2012/12/10/2811285.html

Mybatis 配置文件(转载)相关推荐

  1. Mybatis配置文件注释

    1,Mybatis配置文件注释 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE confi ...

  2. mybatis配置文件解析

    mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...

  3. 2 了解MyBatis配置文件

    2.1 认识配置文件: 介绍 MyBatis的配置文件中包含了影响MyBatis行为和属性的信息,控制MyBatis的整体运行方式.配置文件中主要配置数据源[驱动类,URL,账号,密码],事务管理,加 ...

  4. mybatis 配置文件报错:Referenced file contains errors(file:/D:/config/ mybatis-3-mapper.dtd).

    JAVA就业套餐课:https://edu.csdn.net/combo/detail/1230 在项目搭建过程中,配置Mybatis配置文件时,出现错误:在UserMapper.xml头文件出现   ...

  5. MyBatis之优化MyBatis配置文件中的配置

    MyBatis之优化MyBatis配置文件中的配置 2017/9/30 MyBatis配置文件很重要,首先我们来看看MyBatis配置文件中的内容和顺序: 文件目录结构如下: 1.<proper ...

  6. MyBatis 配置文件 用户密码加密存储

    文章目录 1. 创建db.properties 2. 配置mybatis-config.xml 3. 加解密工具类 4. 加解密依赖 5. 创建SqlSessionFactoryUtil类 6. db ...

  7. mybatis 配置文件中,collection 和 association 的对应关系

    mybatis 配置文件中,collection 和 association 的对应关系  如下图所示:

  8. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  9. SMM学习22:MyBatis配置文件起别名typeAliases

     目录 创建数据库 连接数据库 导入坐标pom.xml 编写mybatis.xml配置文件 编写日志配置文件 编写sql映射文件UserMapper.xml 创建UserMapper接口 创建pojo ...

  10. Mybatis配置文件注意事项

    Mybatis配置文件注意事项 要注意顺序问题 Mybatis配置文件中各标签的位置顺序如下:properties, settings, typeAliases, typeHandlers, obje ...

最新文章

  1. java统计字符串中每个字符出现的次数,统计字符串中每个字符出现的次数
  2. 【自动驾驶/opencv】32.交通灯颜色提取的难点
  3. java entity公共属性_java – 如何从Entity Manager获取jpa数据源属性
  4. ubuntu安装字符集
  5. 【C语言】创建一个函数,并调用比较两个数的大小
  6. mysql 加随机数,如何插入随机数MySql
  7. UIView 的旋转和缩放
  8. linux挂载逻辑卷,CentOS 创建和挂载新的逻辑卷
  9. 20行 Python 代码爬取王者荣耀全英雄皮肤 | 原力计划
  10. 蓝桥杯 ADV-134算法提高 校门外的树
  11. disunity的使用
  12. 万年历(Java版)完整代码
  13. 车辆网相关政策和法律法规
  14. Jenkins项目配置-Nodejs项目(Vue框架)-全面
  15. 4-20ma转换0-10v信号隔离器,0-5v电压放大模块
  16. react-shopping-cart尺码筛选
  17. python的io模块
  18. jQuery Text-to-Speech 谷歌在线语音
  19. Tesseract-OCR引擎的安装
  20. Android超简单底部导航ImageView+TextView+FramLayout(一)

热门文章

  1. [jQuery] 速记一の屏蔽鼠标右键监听鼠标Event
  2. 用计算机装扮校园图片,第4课装扮我们的校园——在场景中运用图形元件教学设计.doc...
  3. FastCGI 使用介绍
  4. 设计模式---访问者模式(C++实现)
  5. 分析redis key大小的几种方法
  6. mysql 有伪表吗_DML和DQL 总结
  7. HMM-MEMM-CRF
  8. pku 2348 Euclid's Game
  9. pku1159 Palindrome(简单dp)
  10. 19年春第十五周学习