SSM项目从零开始到入门011-详解mybatis的XML 映射配置文件
到mybatis-config.xml文件中引入jdbc.properties并配置 已经为普通的 Java 类型内建了许多相应的类型别名。它们都是大小写不敏感的,需要注意的是由于重载原始类型的名称所做的特殊处理。
发布日期: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
这个例子中的 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 { ...}
别名 映射的类型_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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月22日 03时31分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
shell dirname basename
2019-05-01
未来已至,5G加持下的云游戏将走向何方?
2019-05-01
闭关三月!猛男逆道而行,四杀斩获阿里 / 腾讯 / 京东 / 百度等大厂 offer
2019-05-01
计算机网络 —— 网络层 1.
2019-05-01
Echarts使用及动态加载图表数据 折线图X轴数据动态加载
2019-05-01
接口api开发中安全性问题
2019-05-01
URL重定向,referer,referrer和安全
2019-05-01
Android生命周期
2019-05-01
Android进度条自定义——类似ProgressDialog效果的Dialog
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01
【接口自动化】
2019-05-01
SpringBoot搭建一个Web工程
2019-05-01
Spring Boot 安全框架 Shiro 入门
2019-05-01
如何用一句话激怒互联网人?
2019-05-01
用 Python 爬了点你们喜欢的电影
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01
讲真,做Python一定不要只会一个方向!
2019-05-01
Python 2大限来了!113天后自生自灭,官方不再维护更新
2019-05-01
GitHub 热榜第一的 Python 抢票神器!节假日能用上
2019-05-01
1.6w 星开源项目,但作者月薪却不到 5K
2019-05-01