您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > MyBatis配置详解
序言在Eclipse中,将鼠标放在根节点上后,可以看到配置文件中的主要配置项,如下图所示:这些项分别是:properties、settings、typeAliases、typeHandlers、plugins、environments、mappers。注意:这些配置项必须按照先后顺序进行配置。一、配置项介绍properties:用于配置属性信息。settings:用于配置MyBatis的运行时方式。typeAliases:配置类型别名,可以在xml中用别名取代全限定名。typeHandlers:配置类型处理器。plugins:配置拦截器,用于拦截sql语句的执行。environments:配置数据源信息、连接池、事务属性等。mappers:配置SQL映射文件。二、配置项详解(1)properties配置properties采用键值对的格式进行配置。文件内配置propertiespropertyname=name1value=value1/propertyname=name2value=value2/propertyname=name3value=value3/......propertyname=nameNvalue=valueN/文件外配置propertiespropertiesresource=config.properties/“config.properties”中的内容如下所示:name1:value1name2:value2name3:value2......nameN:valueN(2)settings该项配置格式如下所示:settingssettingname=name1value=value1/settingname=name2value=value2/settingname=name3value=value3/......settingname=nameNvalue=valueN//settingssetting可设置的项相关介绍参见下表:设置参数描述有效值默认值cacheEnabled这个配置使全局的映射器启用或禁用缓存。true|falsetruelazyLoadingEnabled全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。ThisvaluecanbesupersededforanspecificrelationbyusingthefetchTypeattributeonit.true|falsefalseaggressiveLazyLoading当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。true|falsetruemultipleResultSetsEnabled允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)true|falsetrueuseColumnLabel使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。true|falsetrueuseGeneratedKeys允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby)true|falseFalseautoMappingBehavior指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况)。NONE,PARTIAL,FULLPARTIALdefaultExecutorType配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行SIMPLEREUSEBATCHSIMPLE器重用语句和批量更新defaultStatementTimeout设置超时时间,它决定驱动等待一个数据库响应的时间。AnypositiveintegerNotSet(null)safeRowBoundsEnabledAllowsusingRowBoundsonnestedstatements.true|falseFalsemapUnderscoreToCamelCaseEnablesautomaticmappingfromclassicdatabasecolumnnamesA_COLUMNtocamelcaseclassicJavapropertynamesaColumn.true|falseFalselocalCacheScopeMyBatisuseslocalcachetopreventcircularreferencesandspeeduprepeatednestedqueries.Bydefault(SESSION)allqueriesexecutedduringasessionarecached.IflocalCacheScope=STATEMENTlocalsessionwillbeusedjustforstatementexecution,nodatawillbesharedbetweentwodifferentcallstothesameSqlSession.SESSION|STATEMENTSESSIONjdbcTypeForNullSpecifiestheJDBCtypefornullvalueswhennospecificJDBCtypewasprovidedfortheparameter.SomedriversrequirespecifyingthecolumnJDBCtypebutothersworkwithgenericvalueslikeNULL,VARCHARorOTHER.JdbcTypeenumeration.Mostcommonare:NULL,VARCHARandOTHEROTHERlazyLoadTriggerMethodsSpecifieswhichObject'smethodstriggeralazyloadAmethodnamelistseparatedbycommasequals,clone,hashCode,toStringdefaultScriptingLanguageSpecifiesthelanguageusedbydefaultfordynamicSQLgeneration.Atypealiasorfullyqualifiedclassname.org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDrivercallSettersOnNulls当结果集中含有Null值时是否执行映射对象的setter或者Map对象的put方法。此设置对于原始类型如int,boolean等无效。true|falsefalselogPrefixSpecifiestheprefixstringthatMyBatiswilladdtotheloggernames.AnyStringNotsetlogImplSpecifieswhichloggingimplementationMyBatisshoulduse.Ifthissettingisnotpresentloggingimplementationwillbeautodiscovered.SLF4J|LOG4J|LOG4J2|JDK_LOGGING|COMMONS_LOGGING|STDOUT_LOGGING|NO_LOGGINGNotsetproxyFactorySpecifiestheproxytoolthatMyBatiswilluseforcreatinglazyloadingcapableobjects.CGLIB|JAVASSISTCGLIB一个设置信息元素的示例,完全的配置如下所示:settingssettingname=cacheEnabledvalue=true/settingname=lazyLoadingEnabledvalue=true/settingname=multipleResultSetsEnabledvalue=true/settingname=useColumnLabelvalue=true/settingname=useGeneratedKeysvalue=false/settingname=autoMappingBehaviorvalue=PARTIAL/settingname=defaultExecutorTypevalue=SIMPLE/settingname=defaultStatementTimeoutvalue=25/settingname=safeRowBoundsEnabledvalue=false/settingname=mapUnderscoreToCamelCasevalue=false/settingname=localCacheScopevalue=SESSION/settingname=jdbcTypeForNullvalue=OTHER/settingname=lazyLoadTriggerMethodsvalue=equals,clone,hashCode,toString//settings(3)typeAliasestypeAliasestypeAliasalias=Authortype=domain.blog.Author/typeAliasalias=Blogtype=domain.blog.Blog/typeAliasalias=Commenttype=domain.blog.Comment/typeAliasalias=Posttype=domain.blog.Post/typeAliasalias=Sectiontype=domain.blog.Section/typeAliasalias=Tagtype=domain.blog.Tag//typeAliases类型别名必须遵循MyBatis命名规范。具体参见:(4)typeHandlers无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。下面这个表格描述了默认的类型处理器。类型处理器Java类型JDBC类型BooleanTypeHandlerjava.lang.Boolean,boolean任何兼容的布尔值ByteTypeHandlerjava.lang.Byte,byte任何兼容的数字或字节类型ShortTypeHandlerjava.lang.Short,short任何兼容的数字或短整型IntegerTypeHandlerjava.lang.Integer,int任何兼容的数字和整型LongTypeHandlerjava.lang.Long,long任何兼容的数字或长整型FloatTypeHandlerjava.lang.Float,float任何兼容的数字或单精度浮点型DoubleTypeHandlerjava.lang.Double,double任何兼容的数字或双精度浮点型BigDecimalTypeHandlerjava.math.BigDecimal任何兼容的数字或十进制小数类型StringTypeHandlerjava.lang.StringCHAR和VARCHAR类型ClobTypeHandlerjava.lang.StringCLOB和LONGVARCHAR类型NStringTypeHandlerjava.lang.StringNVARCHAR和NCHAR类型NClobTyp
本文标题:MyBatis配置详解
链接地址:https://www.777doc.com/doc-4510667 .html