Mybatis 配置文件(转载)

来源:互联网 发布:东风破 知乎 编辑:程序博客网 时间:2024/04/29 19:11

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

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

 

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

 

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

 

 

 

 

二、Properties标签

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

如现在配置一个eas.properties

 

  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.  
  7. #server config 
  8. server.url:http://192.168.2.101:8080/EAS 


在configuration.xml中对属性文件中的值进行引用

 

 

  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.      
  7.     <environmentsdefault="development"> 
  8.         <environmentid="development"> 
  9.             <transactionManagertype="JDBC"/> 
  10.             <dataSourcetype="POOLED"> 
  11.                 <propertyname="driver"value="${db.driver}"/> 
  12.                 <propertyname="url"value="${db.url}"/> 
  13.                 <propertyname="username"value="${db.username}"/> 
  14.                 <propertyname="password"value="${db.password}"/> 
  15.             </dataSource> 
  16.         </environment> 
  17.     </environments> 
  18. </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 为一类设置别名,方便书写

 

  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> 


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)

 

 

  1. // ExamplePlugin.java 
  2. @Intercepts({ @Signature(type = Executor.class, method ="update", args = { MappedStatement.class, Object.class }) }) 
  3. publicclass ExamplePluginimplements Interceptor { 
  4.     public Object intercept(Invocation invocation)throws Throwable { 
  5.         return invocation.proceed(); 
  6.     } 
  7.  
  8.     public Object plugin(Object target) { 
  9.         return Plugin.wrap(target,this); 
  10.     } 
  11.  
  12.     publicvoid setProperties(Properties properties) { 
  13.     } 
  1. <plugins>  
  2.   <plugininterceptor="org.mybatis.example.ExamplePlugin">  
  3.     <propertyname="someProperty"value="100"/>  
  4.   </plugin>  
  5. </plugins>  


就会在所有执行update动作之前进行拦截,执行ExamplePlugin中自定义的一些逻辑

 

对select进行拦截的plugin

 

  1. import org.apache.ibatis.session.ResultHandler; 
  2. import org.apache.ibatis.session.RowBounds; 
  3.  
  4. @Intercepts({ @Signature(args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class }, method = "query", type = Executor.class) }) 
  5. publicclass LogInterceptorimplements Interceptor { 
  6.  
  7.     int index; 
  8.  
  9.     @Override 
  10.     public Object intercept(Invocation invocation)throws Throwable { 
  11.         System.out.println("some log!!!"); 
  12.         return invocation.proceed(); 
  13.     } 
  14.  
  15.     @Override 
  16.     public Object plugin(Object target) { 
  17.         System.out.println("1223--------------" + (index++)); 
  18.         return Plugin.wrap(target, this); 
  19.     } 
  20.  
  21.     @Override 
  22.     publicvoid setProperties(Properties properties) { 
  23.  
  24.     } 
  1. <plugins> 
  2.     <plugininterceptor="com.akwolf.interceptor.LogInterceptor"> 
  3.     </plugin> 
  4.    </plugins> 



 

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

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

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

 

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

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

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

 

  1. <transactionManagertype="MANAGED">  
  2.     <propertyname="closeConnection"value="false"/>  
  3. </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用来注册映射文件
0 0
原创粉丝点击