JAVA mybatis:配置文件结构、项目

来源:互联网 发布:数据分析师报考费用 编辑:程序博客网 时间:2024/06/18 16:53

1.mybatis初始化过程

   a.调用SqlSessionFactoryBuilder对象的build(inputStream)方法

   b.SqlSessionFactoryBuilder 根据inputStream 信息创建 XMLConfigBuilder对象

   c.调用XMLConfigBuilder.parse解析配置返回 Configuration对象

   d.根据Configuration对象创建一个DefaultSessionFactory对象

上述可见,mybatis依赖配置文件创建对象。


配置文件结构,顶层configuration,其他节点:

properties \ settins \ typeAliases \ typeHandlers \ plugins \ environments (environment \ transactionManager \ dataSource) \ databaseIdProvider \ mappers 


1.properties 属性,可实现利用配置文件读取配置

  <properties resource="db.properties">

  便可以在其他地方使用该定义属性文件中的属性了,<dataSource type="POOLED"> <property name="driver" value="${driver}">....

2.setting 设置 ,极为重要。

  cacheEnabled 默认true

 lazyLoadingEnabled  默认false

aggressiveLazyLoading  默认true

 multipleResultSetsEnabled  默认true

 userColumnLabel(使用列标签代替列名)  默认 true

 userGeneratedKeys(允许自动生成主键)  默认 true

autoMappingBehavior(指定如何映射到字段或属性。NONE - 取消自动映射|PARTIAL - 只映射没有定义嵌套结果集 |FULL - 自动映射所有结果集)  默认PARTIAL

autoMappingUnknownColumnBehavior (NONE - 什么都不做 | WARNING - 输出警告 | FAILING - 映射失败 ,抛出SqlSessionExcption )  默认NONE

 defaultExecutorType(SIMPLE - 普通执行器 | REUSE -执行器会重用预处理语句| BATCH 重用语句并) 默认 SIMPLE

 defaultStatementTimeout 超时时间,秒。未设置 null

defaultFetchSize 结果集大小。 未设置 null

safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。默认false

mapUnderscoreToCamelCase 是否开启自动驼峰命名规则(camelcase)映射。默认 false

localCacheScope SESSION(默认)|STATEMENT 。默认 SESSION

jdbcTypeForNull 没指定JDBC类,未空指定JDBC类型。 NULL|VARCHAR|OTHER 。默认OTHER

lzyLoadTriggerMethods 指定哪个对象的方法触发一次延迟加载。list集合 。默认:equals,clone,hashCode,toString

defaultScriptingLanguage 动态SQL生成默认语言。默认 org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver

callSettersOnNulls 结果集中值为null时是否调用映射对象的setter。默认false

logPrefix 日志前缀 , String 默认未设置

logImpl 日志实现类 SLF4J|LOG4J|LOG4J2|JDK_LOGGING|COMMONS_LOGGING|STDOUT_LOGGIN|NO_LOGGING 。默认未设置

proxyFactory 延迟加载能力的对象用到的代理工具 CGLIB|JAVASSIST 。默认 JAVASSIST 


3.typeAliases ,别名

  a.<typeAliases> <typeAlias alias="user" type="org.test.domain.User"/></typeAliases>

  b.<typeAliases><package name="org.test.domain"/></typeAliases>  这种方式,会使用Bean的手写字母,比如 org.test.domain.User ,就是user

  c.注解方式。@Alias("user")


4.typeHandlers 类型处理器。该部分用于进行预处理、结果取值转换Java类型的处理器,一般采用默认即可。

5.objectFactory 对象工厂。 mybatis每次创建对象实例的上海,都会使用对象工厂实例来完成。若想覆盖默认,可自定义。

   a.继承 DefaultObjectFactory类。

   b.配置<objectFactory type="自定义的类"> <property name ="someProperty" value="100"/> </pbjectFactory>。property是对应类中 setProperties方法。

5.environments 配置环境,可配置多种环境。

  <environments default="development">

     <environment id="development">

        <dataSource>

          <property name="driver" value="${driver}">

          <property name="url" value="${url}">

          <property name="username" value="${username}">

          <property name="password" value="${password}">

        </dataSource>

        <transactionManager type="JDBC">

           <property name="..." value="..."/>

        </transactionManager>

     </environment>

  </environments>

  关键,默认环境ID ;每个environment都有ID,事务管理器,数据源。

  事务管理器, JDBC \ MANAGED 。JDBC使用JDBC的提交和回滚,依赖数据源得到的连接来管理事务。 MANAGED ,从不提交会回滚连接,让容器来管理事务。比如JAEE应用服务器的上下文,默认情况会关闭连接,可以将closeConnection设为false来阻止。

        <transactionManager type="MANAGER">

           <property name="closeConnection" value="false"/>

        </transactionManager>

dataSource 数据源连接有UNPOOLED\POOLED\JNDI 三种类型。

主要说一下POOLED的,配置,poolMaximumActiveConnections 默认10,poolMaximumIdleConnections ,poolMaximumCheckoutTime 默认20000ms ,poolTimeToWait 默认20000ms ,poolPingQuery 默认 NO PING QUERY SET, poolPingEnabled 开启侦测查询 ,默认 false 。poolPingConnectionsNotUsedFor 默认0,。


6.mpper 映射

<mappers>

  <mapper resource="../...xml"/> 使用资源文件

  <mapper url="file:C://....xml" />  使用绝对路径

  <mapper class="org.test.mapper.UserMapper"/> 使用类

  <package name="org.test.mapper"/> 使用包

</mappers>