ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:29.11KB ,
资源ID:3508116      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3508116.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MyBatis xml配置文件详解.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MyBatis xml配置文件详解.docx

1、MyBatis xml配置文件详解MyBatis xml配置文件详解一、MyBatis 配置文件基本结构 在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。一个完全的mybatis配置文件结构如下:html view plain copy propertiesproperties元素主要是用来定义配置外在化,比如数据库的连接属性等。这些属性都是可外部配置且可动态替换的,既可以在典型的Java属性文件中配置,亦可以通过properties元素的子元素来传递。例如:html view plain copy 其中的属性就可以在整个配置文件中使

2、用来替换需要动态配置的属性值。比如在数据源中使用的例子:html view plain copy 这个例子中的username和password将会由properties元素中设置的相应值来替换。driver和url属性将会由config.properties文件中对应的值来替换。这样就为配置提供了诸多灵活选择。属性也可以被传递到SqlSessionBuilder.build()方法中。例如:html view plain copySqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props); / . or

3、. SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props); 但是,这也就涉及到了优先级的问题,如果属性不只在一个地方配置,那么mybatis将会按照下面的顺序来加载:在properties元素体内指定的属性首先被读取。然后根据properties元素中的resource属性读取类路径下属性文件或根据url属性指定的路径读取属性文件,并覆盖已读取的同名属性。最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。因此,通过方法参数传递的属性具有最高优先级,resource/ur

4、l属性中指定的配置文件次之,最低优先级的是properties属性中指定的属性。 settingssetting是指定MyBatis的一些全局配置属性,这是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为,所以我们需要清楚的知道这些属性的作用及默认值。设置参数 描述 有效值 默认值cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关 true | false truelazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态 true | false

5、 falseaggressiveLazyLoading 当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载。 true | false truemultipleResultSetsEnabled 是否允许单一语句返回多结果集(需要兼容驱动)。 true | false trueuseColumnLabel 使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。 true | false trueuseGeneratedKeys 允许 JDBC 支持自动生成主键,需要驱动兼容。 如果

6、设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。 true | false FalseautoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。 NONE, PARTIAL, FULL PARTIALdefaultExecutorType 配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statement

7、s); BATCH 执行器将重用语句并执行批量更新。 SIMPLE REUSE BATCH SIMPLEdefaultStatementTimeout 设置超时时间,它决定驱动等待数据库响应的秒数。 Any positive integer Not Set (null)defaultFetchSize Sets the driver a hint as to control fetching size for return results. This parameter value can be override by a query setting. Any positive integer

8、 Not Set (null)safeRowBoundsEnabled 允许在嵌套语句中使用分页(RowBounds)。 true | false FalsemapUnderscoreToCamelCase 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 true | false FalselocalCacheScope MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存

9、一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。 SESSION | STATEMENT SESSIONjdbcTypeForNull 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHERlazyLoadTriggerMethods

10、指定哪个对象的方法触发一次延迟加载。 A method name list separated by commas equals,clone,hashCode,toStringdefaultScriptingLanguage 指定动态 SQL 生成的默认语言。 A type alias or fully qualified class name. org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDrivercallSettersOnNulls 指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 pu

11、t)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的。 true | false falselogPrefix 指定 MyBatis 增加到日志名称的前缀。 Any String Not setlogImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING Not setproxyFactory 指定 Myba

12、tis 创建具有延迟加载能力的对象所用到的代理工具。 CGLIB | JAVASSIST JAVASSIST (MyBatis 3.3 or above)一个完整的settings元素示例如下:html view plain copy typeAliases类型别名是为Java类型设置一个短的名字。它只和xml配置有关,存在的意义仅在于用来减少类完全限定名的冗余,例如:html view plain copy 当这样配置时,Blog可以用在任何使用domain.blog.Blog的地方。也可以指定一个包名,MyBatis会在包名下搜索需要的JavaBean,比如:html view plain

13、 copy 每一个在包domain.blog中的JavaBean,在没有注解的情况下,会使用Bean的首字母小写的非限类名来作为它的别名。比如domain.blog.Author的别名为author;若有注解,则别名为注解值。看下面的例子:html view plain copyAlias(author) public class Author . 已经为许多常见的Java类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是有基本类型名称重复导致的特殊处理。别名 映射的类型_byte byte_long long_short short_int int_integer int_dou

14、ble double_float float_boolean booleanstring Stringbyte Bytelong Longshort Shortint Integerinteger Integerdouble Doublefloat Floatboolean Booleandate Datedecimal BigDecimalbigdecimal BigDecimalobject Objectmap Maphashmap HashMaplist Listarraylist ArrayListcollection Collectioniterator IteratortypeHa

15、ndlers无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。类型处理器 Java 类型 JDBC 类型BooleanTypeHandler java.lang.Boolean, boolean 数据库兼容的 BOOLEANByteTypeHandler java.lang.Byte, byte 数据库兼容的 NUMERIC 或 BYTEShortTypeHandler java.lang.Short, short 数据库兼容的

16、NUMERIC 或 SHORT INTEGERIntegerTypeHandler java.lang.Integer, int 数据库兼容的 NUMERIC 或 INTEGERLongTypeHandler java.lang.Long, long 数据库兼容的 NUMERIC 或 LONG INTEGERFloatTypeHandler java.lang.Float, float 数据库兼容的 NUMERIC 或 FLOATDoubleTypeHandler java.lang.Double, double 数据库兼容的 NUMERIC 或 DOUBLEBigDecimalTypeHan

17、dler java.math.BigDecimal 数据库兼容的 NUMERIC 或 DECIMALStringTypeHandler java.lang.String CHAR, VARCHARClobTypeHandler java.lang.String CLOB, LONGVARCHARNStringTypeHandler java.lang.String NVARCHAR, NCHARNClobTypeHandler java.lang.String NCLOBByteArrayTypeHandler byte 数据库兼容的字节流类型BlobTypeHandler byte BLOB

18、, LONGVARBINARYDateTypeHandler java.util.Date TIMESTAMPDateOnlyTypeHandler java.util.Date DATETimeOnlyTypeHandler java.util.Date TIMESqlTimestampTypeHandler java.sql.Timestamp TIMESTAMPSqlDateTypeHandler java.sql.Date DATESqlTimeTypeHandler java.sql.Time TIMEObjectTypeHandler Any OTHER 或未指定类型 EnumTy

19、peHandler Enumeration Type VARCHAR-任何兼容的字符串类型,存储枚举的名称(而不是索引)EnumOrdinalTypeHandler Enumeration Type 任何兼容的 NUMERIC 或 DOUBLE 类型,存储枚举的索引(而不是名称)。 可以重写类型处理器或创建自己的类型处理器来处理不支持的或非标准的类型。具体的做法为:实现org.apache.ibatis.type.TypeHandler接口,或继承一个很便利的类org.apache.ibatis.type.BaseTypeHandler,然后可以选择性地将它映射到一个JDBC类型。比如:htm

20、l view plain copy / ExampleTypeHandler.java MappedJdbcTypes(JdbcType.VARCHAR) public class ExampleTypeHandler extends BaseTypeHandler Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException ps.setString(i, parameter) ; Override p

21、ublic String getNullableResult(ResultSet rs, String columnName) throws SQLException return rs.getString(columnName) ; Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException return rs.getString(columnIndex) ; Override public String getNullableResult(CallableStatem

22、ent cs, int columnIndex) throws SQLException return cs.getString(columnIndex); 并且还需要在配置文件里面加上:html view plain copy 使用这个的类型处理器将会覆盖已经存在的处理Java的String类型属性和VARCHAR参数及结果的类型处理器。要注意MyBatis不会窥探数据库元信息来决定使用哪种类型,所以必须在参数和结果映射中指明是VARCHAR类型字段,以使其能绑定到正确的类型处理器上。这是因为,MyBatis直到语句被执行才清楚数据类型。通过类型处理器的泛型,MyBatis可以得知该类型处理器的Java类型,不过这种行为可以通过两种方法改变:在类型处理器的元素(typeHandler element)上增加一个javaType属性(比如,javaType=String);在类型处理器的类上(TypeHa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1