SSM项目从零开始到入门011-详解mybatis的XML 映射配置文件
发布日期:2021-06-30 16:29:15 浏览次数:2 分类:技术文章

本文共 5253 字,大约阅读时间需要 17 分钟。

详解mybatis的XML 映射配置文件
MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。
文档的顶层结构如下:顺序不可以打乱
configuration 配置    properties 属性    settings 设置    typeAliases 类型命名    typeHandlers 类型处理器    objectFactory 对象工厂    plugins 插件    environments 环境        environment 环境变量        transactionManager 事务管理器        dataSource 数据源        databaseIdProvider 数据库厂商标识    mappers 映射器

1.properties 属性

xml文件中的属性值都是可外部配置且可动态替换的,即用 ${ xxx }
例子:在上节工程中resource下创建jdbc.properties文件
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
到mybatis-config.xml文件中引入jdbc.properties并配置
这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。
driver 和 url 属性将会由 jdbc.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
在 properties 元素体内指定的属性首先被读取。
然后会读取从类路径下资源或 properties 元素中的 url 属性(url attributes)中加载的属性,它会覆盖已读取的同名属性。
最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,资源文件及 url 属性配置的次之,最低优先级的是 properties 属性中指定的属性。

2.settings

调整 settings 中的设置是非常关键的,它们会改变 MyBatis 的运行时行为。下表描述了设置中各项的意图、默认值等。
一个配置完整的 settings 元素的示例如下:

3.typeAliases

类型别名是为 Java 类型命名的一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。
使用这个配置,“Blog”可以用在任何使用“domain.blog.Blog”的地方。
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。
比如 domain.blog.Author 的别名为 Author;若有注解,则别名为其注解值。
@Alias("author")public class Author {    ...}
已经为普通的 Java 类型内建了许多相应的类型别名。它们都是大小写不敏感的,需要注意的是由于重载原始类型的名称所做的特殊处理。
别名	       映射的类型_byte	       byte_long	       long_short	       short_int	       int_integer	int_double	       double_float	       float_boolean       booleanstring	       Stringbyte	       Bytelong	       Longshort	       Shortint	       Integerinteger	       Integerdouble	       Doublefloat	       Floatboolean	       Booleandate	       Datedecimal  	BigDecimalbigdecimal	BigDecimalobject	       Objectmap	       Maphashmap	       HashMaplist	       Listarraylist	ArrayListcollection	Collectioniterator	Iterator

4.typeHandlers

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型。
下面描述了一些默认的类型处理器。
类型处理器	                          Java 类型	                                     JDBC 类型BooleanTypeHandler	                  java.lang.Boolean, boolean	                    任何兼容的布尔值ByteTypeHandler	                          java.lang.Byte, byte	                            任何兼容的数字或字节类型ShortTypeHandler	                  java.lang.Short, short	                    任何兼容的数字或短整型IntegerTypeHandler	                  java.lang.Integer, int	                    任何兼容的数字和整型LongTypeHandler	                          java.lang.Long, long	                            任何兼容的数字或长整型FloatTypeHandler	                  java.lang.Float, float	                    任何兼容的数字或单精度浮点型DoubleTypeHandler	                  java.lang.Double, double	                    任何兼容的数字或双精度浮点型BigDecimalTypeHandler	                  java.math.BigDecimal                   	    任何兼容的数字或十进制小数类型StringTypeHandler	                  java.lang.String	                            CHAR 和 VARCHAR 类型ClobTypeHandler	                          java.lang.String	                            CLOB 和 LONGVARCHAR 类型NStringTypeHandler	                  java.lang.String	                            NVARCHAR 和 NCHAR 类型NClobTypeHandler	                  java.lang.String	                            NCLOB 类型ByteArrayTypeHandler	                  byte[]	                                    任何兼容的字节流类型BlobTypeHandler     	                  byte[]	                                    BLOB 和 LONGVARBINARY 类型DateTypeHandler	                          java.util.Date	                            TIMESTAMP 类型DateOnlyTypeHandler	                  java.util.Date	                            DATE 类型TimeOnlyTypeHandler	                  java.util.Date	                            TIME 类型SqlTimestampTypeHandler	                  java.sql.Timestamp	                            TIMESTAMP 类型SqlDateTypeHandler	                  java.sql.Date                    	            DATE 类型SqlTimeTypeHandler	                  java.sql.Time	                                    TIME 类型ObjectTypeHandler	                  Any	                                            其他或未指定类型EnumTypeHandler 	                  Enumeration Type	                            VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)EnumOrdinalTypeHandler	                  Enumeration Type	                     任何兼容的 NUMERIC 或 DOUBLE 类型,作为位置存储(而不是代码本身)。
你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。
具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口,或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler,然后可以将它映射到一个 JDBC 类型。

转载地址:https://kevin.blog.csdn.net/article/details/78813910 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:myeclipse包变成文件夹
下一篇:SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月22日 03时31分37秒